@startuml
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class AttributeRequest {
  Name string
  Optional bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class RegistrationRequest {
  Name string
  Type string
  MaxEnrollments int
  Affiliation string
  Attributes []Attribute
  CAName string
  Secret string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class EnrollmentRequest {
  Name string
  Secret string
  AttrReqs []*AttributeRequest
  Profile string
  Label string
  Type string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class ReenrollmentRequest {
  Name string
  Profile string
  Label string
  AttrReqs []*AttributeRequest
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class Attribute {
  Name string
  Value string
  ECert bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class RevocationRequest {
  Name string
  Serial string
  AKI string
  Reason string
  CAName string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class RevocationResponse {
  RevokedCerts []RevokedCert
  CRL []byte
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class RevokedCert {
  Serial string
  AKI string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class IdentityRequest {
  ID string
  Affiliation string
  Attributes []Attribute
  Type string
  MaxEnrollments int
  Secret string
  CAName string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class RemoveIdentityRequest {
  ID string
  Force bool
  CAName string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class IdentityResponse {
  ID string
  Affiliation string
  Attributes []Attribute
  Type string
  MaxEnrollments int
  Secret string
  CAName string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class AffiliationRequest {
  Name string
  Force bool
  CAName string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class ModifyAffiliationRequest {
  AffiliationRequest
  NewName string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class AffiliationResponse {
  AffiliationInfo
  CAName string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class AffiliationInfo {
  Name string
  Affiliations []AffiliationInfo
  Identities []IdentityInfo
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class IdentityInfo {
  ID string
  Type string
  Affiliation string
  Attributes []Attribute
  MaxEnrollments int
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 class GetCAInfoResponse {
  CAName string
  CAChain []byte
  IssuerPublicKey []byte
  IssuerRevocationPublicKey []byte
  Version string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class CAClientImpl {
  orgName string
  caName string
  orgMSPID string
  cryptoSuite core.CryptoSuite
  identityManager msp.IdentityManager
  userStore msp.UserStore
  adapter *fabricCAAdapter
  registrar msp.EnrollCredentials
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class CertFileUserStore {
  store core.KVStore
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class fabricCAAdapter {
  config msp.IdentityConfig
  cryptoSuite core.CryptoSuite
  caClient *calib.Client
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class IdentityConfig {
  client *msp.ClientConfig
  caConfigsByOrg map[string][]*msp.CAConfig
  backend *lookup.ConfigLookup
  caKeyStorePath string
  credentialStorePath string
  caMatchers []matcherEntry
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class entityMatchers {
  matchers map[string][]MatchConfig
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class matcherEntry {
  regex *regexp.Regexp
  matchConfig MatchConfig
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class identityConfigEntity {
  Client ClientConfig
  Organizations map[string]fabImpl.OrganizationConfig
  CertificateAuthorities map[string]CAConfig
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class ClientConfig {
  Organization string
  Logging logApi.LoggingType
  CryptoConfig msp.CCType
  TLSCerts ClientTLSConfig
  CredentialStore msp.CredentialStoreType
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class ClientTLSConfig {
  Client endpoint.TLSKeyPair
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class CAConfig {
  URL string
  GRPCOptions map[string]interface  { }
  TLSCACerts endpoint.MutualTLSConfig
  Registrar msp.EnrollCredentials
  CAName string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class MatchConfig {
  Pattern string
  URLSubstitutionExp string
  SSLTargetOverrideURLSubstitutionExp string
  MappedHost string
  MappedName string
  IgnoreEndpoint bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class IdentityManager {
  orgName string
  orgMSPID string
  config fab.EndpointConfig
  cryptoSuite core.CryptoSuite
  embeddedUsers map[string]fab.CertKeyPair
  mspPrivKeyStore core.KVStore
  mspCertStore core.KVStore
  userStore msp.UserStore
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class MemoryKeyStore {
  store map[string]bccsp.Key
  password []byte
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class MemoryUserStore {
  store map[string][]byte
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class IdentityConfigOptions {
  client
  caConfig
  caServerCerts
  caClientKey
  caClientCert
  caKeyStorePath
  credentialStorePath
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class setter {
  isSet bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmsp {
 class enrollmentResponseNet {
  Cert string
  ServerInfo serverInfoResponseNet
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmsp {
 class serverInfoResponseNet {
  CAName string
  CAChain string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmsp {
 class MockFabricCAServer {
  address string
  cryptoSuite core.CryptoSuite
  running bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmsp {
 class MockKey {
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmsp {
 class MockSigningIdentity {
  id string
  mspid string
  enrollmentCertificate []byte
  privateKey core.Key
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmsp {
 class MockUserStore {
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmspapi {
 class MockCAClient {
  ctrl *gomock.Controller
  recorder *MockCAClientMockRecorder
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmspapi {
 class MockCAClientMockRecorder {
  mock *MockCAClient
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 class User {
  id string
  mspID string
  enrollmentCertificate []byte
  privateKey core.Key
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api {
 interface CAClient  {
  Enroll(request *EnrollmentRequest)error
  Reenroll(request *ReenrollmentRequest)error
  Register(request *RegistrationRequest)(string,error)
  Revoke(request *RevocationRequest)(*RevocationResponse,error)
  GetCAInfo()(*GetCAInfoResponse,error)
  CreateIdentity(request *IdentityRequest)(*IdentityResponse,error)
  GetIdentity(id,caname string)(*IdentityResponse,error)
  ModifyIdentity(request *IdentityRequest)(*IdentityResponse,error)
  RemoveIdentity(request *RemoveIdentityRequest)(*IdentityResponse,error)
  GetAllIdentities(caname string)([]*IdentityResponse,error)
  GetAffiliation(affiliation,caname string)(*AffiliationResponse,error)
  GetAllAffiliations(caname string)(*AffiliationResponse,error)
  AddAffiliation(request *AffiliationRequest)(*AffiliationResponse,error)
  ModifyAffiliation(request *ModifyAffiliationRequest)(*AffiliationResponse,error)
  RemoveAffiliation(request *AffiliationRequest)(*AffiliationResponse,error)
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 interface client  {
  Client()*msp.ClientConfig
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 interface caConfig  {
  CAConfig(org string)(*msp.CAConfig,bool)
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 interface caServerCerts  {
  CAServerCerts(org string)([][]byte,bool)
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 interface caClientKey  {
  CAClientKey(org string)([]byte,bool)
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 interface caClientCert  {
  CAClientCert(org string)([]byte,bool)
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 interface caKeyStorePath  {
  CAKeyStorePath()string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp {
 interface credentialStorePath  {
  CredentialStorePath()string
} 
}
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.RegistrationRequest ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.Attribute : Attributes
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.EnrollmentRequest ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.AttributeRequest : AttrReqs
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.ReenrollmentRequest ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.AttributeRequest : AttrReqs
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.RevocationResponse ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.RevokedCert : RevokedCerts
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.IdentityRequest ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.Attribute : Attributes
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.IdentityResponse ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.Attribute : Attributes
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.ModifyAffiliationRequest -|> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.AffiliationRequest
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.AffiliationResponse -|> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.AffiliationInfo
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.AffiliationInfo ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.AffiliationInfo : Affiliations
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.AffiliationInfo ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.IdentityInfo : Identities
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.IdentityInfo ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.Attribute : Attributes
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.CAClientImpl ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.fabricCAAdapter : adapter
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.IdentityConfig ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.matcherEntry : caMatchers
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.entityMatchers ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.MatchConfig : matchers
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.matcherEntry ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.MatchConfig : matchConfig
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.identityConfigEntity ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.ClientConfig : Client
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.identityConfigEntity ---> "*" github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.CAConfig : CertificateAuthorities
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.ClientConfig ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.ClientTLSConfig : TLSCerts
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmsp.enrollmentResponseNet ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmsp.serverInfoResponseNet : ServerInfo
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmspapi.MockCAClient ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmspapi.MockCAClientMockRecorder : recorder
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmspapi.MockCAClientMockRecorder ---> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmspapi.MockCAClient : mock
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.CAClient <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.CAClientImpl
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\api.CAClient <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp\\test\\mockmspapi.MockCAClient
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.client <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.IdentityConfig
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.caConfig <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.IdentityConfig
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.caServerCerts <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.IdentityConfig
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.caClientKey <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.IdentityConfig
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.caClientCert <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.IdentityConfig
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.caKeyStorePath <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.IdentityConfig
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.credentialStorePath <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\msp.IdentityConfig
@enduml