@startuml
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\comm\\tls {
 class certPool {
  certPool *x509.CertPool
  certs []*x509.Certificate
  certsByName map[string][]int
  lock sync.RWMutex
  dirty int32
  systemCertPool bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config {
 class options {
  envPrefix string
  templatePath string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\cryptoutil {
 class PrivateKey {
  cryptoSuite core.CryptoSuite
  key core.Key
  publicKey crypto.PublicKey
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config {
 class defConfigBackend {
  configViper *viper.Viper
  opts options
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\endpoint {
 class MutualTLSConfig {
  Pem []string
  Path string
  Client TLSKeyPair
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\endpoint {
 class TLSKeyPair {
  Key TLSConfig
  Cert TLSConfig
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\endpoint {
 class TLSConfig {
  Path string
  Pem string
  bytes []byte
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\lookup {
 class unmarshalOpts {
  hooks []mapstructure.DecodeHookFunc
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\lookup {
 class ConfigLookup {
  backends []core.ConfigBackend
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite\\bccsp\\wrapper {
 class CryptoSuite {
  BCCSP bccsp.BCCSP
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite\\bccsp\\wrapper {
 class key {
  key bccsp.Key
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite\\common\\pkcs11 {
 class ContextHandle {
  ctx *mPkcs11.Ctx
  slot uint
  pin string
  lib string
  label string
  sessions chan mPkcs11.SessionHandle
  opts ctxOpts
  reloadNotification chan struct { }
  lock sync.RWMutex
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite\\common\\pkcs11 {
 class pkcs11CtxCacheKey {
  lib string
  label string
  pin string
  opts ctxOpts
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite\\common\\pkcs11 {
 class ctxOpts {
  sessionCacheSize int
  openSessionRetry int
  connectionName string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 class Config {
  backend *lookup.ConfigLookup
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 class CryptoConfigOptions {
  isSecurityEnabled
  securityAlgorithm
  securityLevel
  securityProvider
  softVerify
  securityProviderLibPath
  securityProviderPin
  securityProviderLabel
  keyStorePath
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 class setter {
  isSet bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\api {
 class LoggingType {
  Level string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\metadata {
 class callerInfoKey {
  module string
  level api.Level
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\metadata {
 class CallerInfo {
  showcaller map[callerInfoKey]bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\metadata {
 class ModuleLevels {
  levels map[string]api.Level
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\modlog {
 class Provider {
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\modlog {
 class Log {
  deflogger *log.Logger
  customLogger api.Logger
  module string
  custom bool
  once sync.Once
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\modlog {
 class loggerOpts {
  levelEnabled bool
  callerInfoEnabled bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\testdata {
 class sampleLoggingProvider {
  buf *bytes.Buffer
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\testdata {
 class SampleLogger {
  customLogger *log.Logger
  module string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\mocks {
 class MockConfigBackend {
  KeyValueMap map[string]interface  { }
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\mocks {
 class MockCoreContext {
  MockConfig core.CryptoSuiteConfig
  MockCryptoSuite core.CryptoSuite
  MockUserStore msp.UserStore
  MockSigningManager core.SigningManager
  MockCryptoSuiteConfig core.CryptoSuiteConfig
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\mocks {
 class MockSigningManager {
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 interface isSecurityEnabled  {
  IsSecurityEnabled()bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 interface securityAlgorithm  {
  SecurityAlgorithm()string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 interface securityLevel  {
  SecurityLevel()int
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 interface securityProvider  {
  SecurityProvider()string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 interface softVerify  {
  SoftVerify()bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 interface securityProviderLibPath  {
  SecurityProviderLibPath()string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 interface securityProviderPin  {
  SecurityProviderPin()string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 interface securityProviderLabel  {
  SecurityProviderLabel()string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite {
 interface keyStorePath  {
  KeyStorePath()string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\api {
 interface Logger  {
  Fatal(v ... interface  { })
  Fatalf(format string,v ... interface  { })
  Fatalln(v ... interface  { })
  Panic(v ... interface  { })
  Panicf(format string,v ... interface  { })
  Panicln(v ... interface  { })
  Print(v ... interface  { })
  Printf(format string,v ... interface  { })
  Println(v ... interface  { })
  Debug(args ... interface  { })
  Debugf(format string,args ... interface  { })
  Debugln(args ... interface  { })
  Info(args ... interface  { })
  Infof(format string,args ... interface  { })
  Infoln(args ... interface  { })
  Warn(args ... interface  { })
  Warnf(format string,args ... interface  { })
  Warnln(args ... interface  { })
  Error(args ... interface  { })
  Errorf(format string,args ... interface  { })
  Errorln(args ... interface  { })
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\api {
 interface LoggerProvider  {
  GetLogger(module string)Logger
} 
}
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config.defConfigBackend ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config.options : opts
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\endpoint.MutualTLSConfig ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\endpoint.TLSKeyPair : Client
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\endpoint.TLSKeyPair ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\endpoint.TLSConfig : Key
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\endpoint.TLSKeyPair ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\endpoint.TLSConfig : Cert
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite\\common\\pkcs11.ContextHandle ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite\\common\\pkcs11.ctxOpts : opts
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite\\common\\pkcs11.pkcs11CtxCacheKey ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite\\common\\pkcs11.ctxOpts : opts
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\config\\lookup.ConfigLookup : backend
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.isSecurityEnabled <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.securityAlgorithm <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.securityLevel <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.securityProvider <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.softVerify <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.securityProviderLibPath <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.securityProviderPin <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.securityProviderLabel <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.keyStorePath <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\cryptosuite.Config
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\api.Logger <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\modlog.Log
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\api.Logger <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\testdata.SampleLogger
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\api.LoggerProvider <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\modlog.Provider
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\api.LoggerProvider <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\core\\logging\\testdata.sampleLoggingProvider
@enduml