lib

package
v1.10.0-beta4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 17, 2024 License: Apache-2.0 Imports: 89 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultServerPort is the default listening port for the fabric-ca server
	DefaultServerPort = 7054

	// DefaultServerAddr is the default listening address for the fabric-ca server
	DefaultServerAddr = "0.0.0.0"
)
View Source
const (

	// CAChainParentFirstEnvVar is the name of the environment variable that needs to be set
	// for server to return CA chain in parent-first order
	CAChainParentFirstEnvVar = "CA_CHAIN_PARENT_FIRST"
)

Variables

This section is empty.

Functions

func BytesToX509Cert

func BytesToX509Cert(bytes []byte) (*x509.Certificate, error)

BytesToX509Cert converts bytes (PEM or DER) to an X509 certificate

func CopyFile added in v1.9.0

func CopyFile(src, dst string) error

CopyFile copies a file

func GenerateECDSATestCert added in v1.9.0

func GenerateECDSATestCert() error

GenerateECDSATestCert generates EC based certificate for testing purposes

func GetCertID

func GetCertID(certBytes []byte) (string, string, error)

GetCertID extracts the serial number and authority key ID from a PEM encoded certificate.

func GetKeyRequest added in v1.9.0

func GetKeyRequest(cfg *CAConfig) *api.KeyRequest

GetKeyRequest constructs and returns api.KeyRequest object based on the bccsp configuration options

func IdentityDecoder added in v1.9.0

func IdentityDecoder(decoder *json.Decoder) error

IdentityDecoder decodes streams of data coming from the server into an Identity object

func LoadPEMCertPool added in v1.9.0

func LoadPEMCertPool(certFiles []string) (*x509.CertPool, error)

LoadPEMCertPool loads a pool of PEM certificates from list of files

func NormalizeURL

func NormalizeURL(addr string) (*url.URL, error)

NormalizeURL normalizes a URL (from cfssl)

func UnmarshalConfig added in v1.9.0

func UnmarshalConfig(config interface{}, vp *viper.Viper, configFile string,
	server bool) error

UnmarshalConfig unmarshals a configuration file

Types

type Accessor added in v1.9.0

type Accessor struct {
	// contains filtered or unexported fields
}

Accessor implements db.Accessor interface.

func NewDBAccessor added in v1.9.0

func NewDBAccessor(cadb db.FabricCADB) *Accessor

NewDBAccessor is a constructor for the database API

func (*Accessor) DeleteAffiliation added in v1.9.0

func (d *Accessor) DeleteAffiliation(name string, force, identityRemoval, isRegistrar bool) (*user.DbTxResult, error)

DeleteAffiliation deletes affiliation from database. Using the force option with identity removal allowed this will also delete the identities associated with removed affiliations, and also delete the certificates for the identities removed

func (*Accessor) DeleteUser added in v1.9.0

func (d *Accessor) DeleteUser(id string) (user.User, error)

DeleteUser deletes user from database

func (*Accessor) GetAffiliation added in v1.9.0

func (d *Accessor) GetAffiliation(name string) (spi.Affiliation, error)

GetAffiliation gets affiliation from database

func (*Accessor) GetAffiliationTree added in v1.9.0

func (d *Accessor) GetAffiliationTree(name string) (*user.DbTxResult, error)

GetAffiliationTree returns the requested affiliation and affiliations below

func (*Accessor) GetAllAffiliations added in v1.9.0

func (d *Accessor) GetAllAffiliations(name string) (*sqlx.Rows, error)

GetAllAffiliations gets the requested affiliation and any sub affiliations from the database

func (*Accessor) GetFilteredUsers added in v1.9.0

func (d *Accessor) GetFilteredUsers(affiliation, types string) (*sqlx.Rows, error)

GetFilteredUsers returns all identities that fall under the affiliation and types

func (*Accessor) GetUser added in v1.9.0

func (d *Accessor) GetUser(id string, attrs []string) (user.User, error)

GetUser gets user from database

func (*Accessor) GetUserLessThanLevel added in v1.9.0

func (d *Accessor) GetUserLessThanLevel(level int) ([]user.User, error)

GetUserLessThanLevel returns all identities that are less than the level specified Otherwise, returns no users if requested level is zero

func (*Accessor) InsertAffiliation added in v1.9.0

func (d *Accessor) InsertAffiliation(name string, prekey string, level int) error

InsertAffiliation inserts affiliation into database

func (*Accessor) InsertUser added in v1.9.0

func (d *Accessor) InsertUser(user *cadbuser.Info) error

InsertUser inserts user into database

func (*Accessor) ModifyAffiliation added in v1.9.0

func (d *Accessor) ModifyAffiliation(oldAffiliation, newAffiliation string, force, isRegistrar bool) (*user.DbTxResult, error)

ModifyAffiliation renames the affiliation and updates all identities to use the new affiliation depending on the value of the "force" parameter

func (*Accessor) SetDB added in v1.9.0

func (d *Accessor) SetDB(db db.FabricCADB)

SetDB changes the underlying sql.DB object Accessor is manipulating.

func (*Accessor) UpdateUser added in v1.9.0

func (d *Accessor) UpdateUser(user *cadbuser.Info, updatePass bool) error

UpdateUser updates user in database

type CA added in v1.9.0

type CA struct {
	// The home directory for the CA
	HomeDir string
	// The CA's configuration
	Config *CAConfig
	// The file path of the config file
	ConfigFilePath string
	// contains filtered or unexported fields
}

CA represents a certificate authority which signs, issues and revokes certificates

func (*CA) CertDBAccessor added in v1.9.0

func (ca *CA) CertDBAccessor() *CertDBAccessor

CertDBAccessor returns the certificate DB accessor for CA

func (*CA) DBAccessor added in v1.9.0

func (ca *CA) DBAccessor() user.Registry

DBAccessor returns the registry DB accessor for server

func (*CA) GetCertificate added in v1.9.0

func (ca *CA) GetCertificate(serial, aki string) (*certdb.CertificateRecord, error)

GetCertificate returns a single certificate matching serial and aki, if multiple certificates found for serial and aki an error is returned

func (*CA) GetDB added in v1.9.0

func (ca *CA) GetDB() db.FabricCADB

GetDB returns pointer to database

func (*CA) VerifyCertificate added in v1.9.0

func (ca *CA) VerifyCertificate(cert *x509.Certificate, forceTime bool) error

VerifyCertificate verifies that 'cert' was issued by this CA Return nil if successful; otherwise, return an error. 'forceTime' if false, certificate expiry times will be checked based on the current time. if true, it will force the time to be used to check for expiry to be 30 seconds after the certificate start time. (this is to support reenrollIgnoreCertExpiry)

type CAConfig

type CAConfig struct {
	Version      string `skip:"true"`
	Cfg          CfgOptions
	CA           CAInfo
	Signing      *config.Signing `skip:"true"`
	CSR          api.CSRInfo
	Registry     CAConfigRegistry
	Affiliations map[string]interface{}
	LDAP         ldap.Config
	DB           CAConfigDB
	CSP          *factory.FactoryOpts `yaml:"bccsp" mapstructure:"bccsp" hide:"true"`
	// Optional client config for an intermediate server which acts as a client
	// of the root (or parent) server
	Client       *ClientConfig `skip:"true"`
	Intermediate IntermediateCA
	CRL          CRLConfig
	Idemix       idemix.Config
}

CAConfig is the CA instance's config The tags are recognized by the RegisterFlags function in fabric-ca/util/flag.go and are as follows: "def" - the default value of the field; "opt" - the optional one character short name to use on the command line; "help" - the help message to display on the command line; "skip" - to skip the field.

type CAConfigDB added in v1.9.0

type CAConfigDB struct {
	Type       string `def:"sqlite3" help:"Type of database; one of: sqlite3, postgres, mysql"`
	Datasource string `def:"fabric-ca-server.db" help:"Data source which is database specific"`
	TLS        tls.ClientTLSConfig
}

CAConfigDB is the database part of the server's config

func (CAConfigDB) String added in v1.9.0

func (c CAConfigDB) String() string

Implements Stringer interface for CAConfigDB Calls util.StructToString to convert the CAConfigDB struct to string and masks the password from the database URL. Returns resulting string.

type CAConfigIdentity added in v1.9.0

type CAConfigIdentity struct {
	Name           string `mask:"username"`
	Pass           string `mask:"password"`
	Type           string
	Affiliation    string
	MaxEnrollments int
	Attrs          map[string]string
}

CAConfigIdentity is identity information in the server's config

func (CAConfigIdentity) String added in v1.9.0

func (cc CAConfigIdentity) String() string

type CAConfigRegistry added in v1.9.0

type CAConfigRegistry struct {
	MaxEnrollments int `def:"-1" help:"Maximum number of enrollments; valid if LDAP not enabled"`
	Identities     []CAConfigIdentity
}

CAConfigRegistry is the registry part of the server's config

type CAInfo added in v1.9.0

type CAInfo struct {
	Name                     string `opt:"n" help:"Certificate Authority name"`
	Keyfile                  string `help:"PEM-encoded CA key file"`
	Certfile                 string `def:"ca-cert.pem" help:"PEM-encoded CA certificate file"`
	Chainfile                string `def:"ca-chain.pem" help:"PEM-encoded CA chain file"`
	ReenrollIgnoreCertExpiry bool   `def:"false" help:"Ignore Certificate Expiry for re-enroll"`
}

CAInfo is the CA information on a fabric-ca-server

type CORS added in v1.9.0

type CORS struct {
	Enabled bool     `help:"Enable CORS for the fabric-ca-server"`
	Origins []string `help:"Comma-separated list of Access-Control-Allow-Origin domains"`
}

CORS defines the Cross-Origin Resource Sharing settings for the server.

type CRLConfig added in v1.9.0

type CRLConfig struct {
	// Specifies expiration for the CRL generated by the gencrl request
	// The number of hours specified by this property is added to the UTC time, resulting time
	// is used to set the 'Next Update' date of the CRL
	Expiry time.Duration `def:"24h" help:"Expiration for the CRL generated by the gencrl request"`
}

CRLConfig contains configuration options used by the gencrl request handler

type CertDBAccessor added in v1.9.0

type CertDBAccessor struct {
	// contains filtered or unexported fields
}

CertDBAccessor implements certdb.Accessor interface.

func NewCertDBAccessor added in v1.9.0

func NewCertDBAccessor(db cadb.FabricCADB, level int) *CertDBAccessor

NewCertDBAccessor returns a new Accessor.

func (*CertDBAccessor) GetCertificate added in v1.9.0

func (d *CertDBAccessor) GetCertificate(serial, aki string) (crs []certdb.CertificateRecord, err error)

GetCertificate gets a CertificateRecord indexed by serial.

func (*CertDBAccessor) GetCertificateWithID added in v1.9.0

func (d *CertDBAccessor) GetCertificateWithID(serial, aki string) (crs db.CertRecord, err error)

GetCertificateWithID gets a CertificateRecord indexed by serial and returns user too.

func (*CertDBAccessor) GetCertificates added in v1.9.0

func (d *CertDBAccessor) GetCertificates(req cr.CertificateRequest, callersAffiliation string) (*sqlx.Rows, error)

GetCertificates returns based on filter parameters certificates

func (*CertDBAccessor) GetCertificatesByID added in v1.9.0

func (d *CertDBAccessor) GetCertificatesByID(id string) (crs []db.CertRecord, err error)

GetCertificatesByID gets a CertificateRecord indexed by id.

func (*CertDBAccessor) GetOCSP added in v1.9.0

func (d *CertDBAccessor) GetOCSP(serial, aki string) (ors []certdb.OCSPRecord, err error)

GetOCSP retrieves a certdb.OCSPRecord from db by serial.

func (*CertDBAccessor) GetRevokedAndUnexpiredCertificates added in v1.9.0

func (d *CertDBAccessor) GetRevokedAndUnexpiredCertificates() ([]certdb.CertificateRecord, error)

GetRevokedAndUnexpiredCertificates returns revoked and unexpired certificates

func (*CertDBAccessor) GetRevokedAndUnexpiredCertificatesByLabel added in v1.9.0

func (d *CertDBAccessor) GetRevokedAndUnexpiredCertificatesByLabel(label string) ([]certdb.CertificateRecord, error)

GetRevokedAndUnexpiredCertificatesByLabel returns revoked and unexpired certificates matching the label

func (*CertDBAccessor) GetRevokedCertificates added in v1.9.0

func (d *CertDBAccessor) GetRevokedCertificates(expiredAfter, expiredBefore, revokedAfter, revokedBefore time.Time) ([]certdb.CertificateRecord, error)

GetRevokedCertificates returns revoked certificates

func (*CertDBAccessor) GetUnexpiredCertificates added in v1.9.0

func (d *CertDBAccessor) GetUnexpiredCertificates() (crs []certdb.CertificateRecord, err error)

GetUnexpiredCertificates gets all unexpired certificate from db.

func (*CertDBAccessor) GetUnexpiredOCSPs added in v1.9.0

func (d *CertDBAccessor) GetUnexpiredOCSPs() (ors []certdb.OCSPRecord, err error)

GetUnexpiredOCSPs retrieves all unexpired certdb.OCSPRecord from db.

func (*CertDBAccessor) InsertCertificate added in v1.9.0

func (d *CertDBAccessor) InsertCertificate(cr certdb.CertificateRecord) error

InsertCertificate puts a CertificateRecord into db.

func (*CertDBAccessor) InsertOCSP added in v1.9.0

func (d *CertDBAccessor) InsertOCSP(rr certdb.OCSPRecord) error

InsertOCSP puts a new certdb.OCSPRecord into the db.

func (*CertDBAccessor) RevokeCertificate added in v1.9.0

func (d *CertDBAccessor) RevokeCertificate(serial, aki string, reasonCode int) error

RevokeCertificate updates a certificate with a given serial number and marks it revoked.

func (*CertDBAccessor) RevokeCertificatesByID added in v1.9.0

func (d *CertDBAccessor) RevokeCertificatesByID(id string, reasonCode int) (crs []db.CertRecord, err error)

RevokeCertificatesByID updates all certificates for a given ID and marks them revoked.

func (*CertDBAccessor) SetDB added in v1.9.0

func (d *CertDBAccessor) SetDB(db *db.DB)

SetDB changes the underlying sql.DB object Accessor is manipulating.

func (*CertDBAccessor) UpdateOCSP added in v1.9.0

func (d *CertDBAccessor) UpdateOCSP(serial, aki, body string, expiry time.Time) error

UpdateOCSP updates a ocsp response record with a given serial number.

func (*CertDBAccessor) UpsertOCSP added in v1.9.0

func (d *CertDBAccessor) UpsertOCSP(serial, aki, body string, expiry time.Time) error

UpsertOCSP update a ocsp response record with a given serial number, or insert the record if it doesn't yet exist in the db

type CertificateDecoder

type CertificateDecoder struct {
	// contains filtered or unexported fields
}

CertificateDecoder is needed to keep track of state, to see how many certificates have been returned for each enrollment ID.

func NewCertificateDecoder added in v1.9.0

func NewCertificateDecoder(storePath string) *CertificateDecoder

NewCertificateDecoder returns decoder for certificates

func (*CertificateDecoder) CertificateDecoder added in v1.9.0

func (cd *CertificateDecoder) CertificateDecoder(decoder *json.Decoder) error

CertificateDecoder decodes streams of data coming from the server

type CertificateStatus

type CertificateStatus string

CertificateStatus represents status of an enrollment certificate

const (
	// Revoked is the status of a revoked certificate
	Revoked CertificateStatus = "revoked"
	// Good is the status of a active certificate
	Good = "good"
)

type CfgOptions added in v1.9.0

type CfgOptions struct {
	Identities   identitiesOptions
	Affiliations affiliationsOptions
}

CfgOptions is a CA configuration that allows for setting different options

type Client

type Client struct {
	// The client's home directory
	HomeDir string `json:"homeDir,omitempty"`
	// The client's configuration
	Config *ClientConfig
	// contains filtered or unexported fields
}

Client is the fabric-ca client object

func TestGetClient added in v1.9.0

func TestGetClient(port int, home string) *Client

TestGetClient returns a Fabric CA client

func TestGetRootClient added in v1.9.0

func TestGetRootClient() *Client

TestGetRootClient returns a Fabric CA client that is meant for a root Fabric CA server

func (*Client) CheckEnrollment added in v1.9.0

func (c *Client) CheckEnrollment() error

CheckEnrollment returns an error if this client is not enrolled

func (*Client) Enroll

func (c *Client) Enroll(req *api.EnrollmentRequest) (*EnrollmentResponse, error)

Enroll enrolls a new identity @param req The enrollment request

func (*Client) GenCSR

func (c *Client) GenCSR(req *api.CSRInfo, id string) ([]byte, bccsp.Key, error)

GenCSR generates a CSR (Certificate Signing Request)

func (*Client) GenCSRUsingKey added in v1.9.0

func (c *Client) GenCSRUsingKey(req *api.CSRInfo, id string, k bccsp.Key) ([]byte, bccsp.Key, error)

GenCSRUsingKey generates a CSR (Certificate Signing Request) using the supplied private key.

func (*Client) GetCAInfo

func (c *Client) GetCAInfo(req *api.GetCAInfoRequest) (*GetCAInfoResponse, error)

GetCAInfo returns generic CA information

func (*Client) GetCSP

func (c *Client) GetCSP() bccsp.BCCSP

GetCSP returns BCCSP instance associated with this client

func (*Client) GetCertFilePath added in v1.9.0

func (c *Client) GetCertFilePath() string

GetCertFilePath returns the path to the certificate file for this client

func (*Client) GetIssuerPubKey added in v1.9.0

func (c *Client) GetIssuerPubKey() (*idemix.IssuerPublicKey, error)

GetIssuerPubKey returns issuer public key associated with this client

func (*Client) Init

func (c *Client) Init() error

Init initializes the client

func (*Client) LoadCSRInfo added in v1.9.0

func (c *Client) LoadCSRInfo(path string) (*api.CSRInfo, error)

LoadCSRInfo reads CSR (Certificate Signing Request) from a file @parameter path The path to the file contains CSR info in JSON format

func (*Client) LoadIdentity added in v1.9.0

func (c *Client) LoadIdentity(keyFile, certFile, idemixCredFile string) (*Identity, error)

LoadIdentity loads an identity from disk

func (*Client) LoadMyIdentity added in v1.9.0

func (c *Client) LoadMyIdentity() (*Identity, error)

LoadMyIdentity loads the client's identity from disk

func (*Client) NewIdentity

func (c *Client) NewIdentity(creds []credential.Credential) (*Identity, error)

NewIdentity creates a new identity

func (*Client) NewX509Identity

func (c *Client) NewX509Identity(name string, creds []credential.Credential) x509cred.Identity

NewX509Identity creates a new identity

func (*Client) SendReq

func (c *Client) SendReq(req *http.Request, result interface{}) (err error)

SendReq sends a request to the fabric-ca-server and fills in the result

func (*Client) StreamResponse

func (c *Client) StreamResponse(req *http.Request, stream string, cb func(*json.Decoder) error) (err error)

StreamResponse reads the response as it comes back from the server

type ClientConfig

type ClientConfig struct {
	URL        string `def:"http://localhost:7054" opt:"u" help:"URL of fabric-ca-server"`
	MSPDir     string `def:"msp" opt:"M" help:"Membership Service Provider directory"`
	TLS        tls.ClientTLSConfig
	Enrollment api.EnrollmentRequest
	CSR        api.CSRInfo
	ID         api.RegistrationRequest
	Revoke     api.RevocationRequest
	CAInfo     api.GetCAInfoRequest
	CAName     string               `help:"Name of CA"`
	CSP        *factory.FactoryOpts `mapstructure:"bccsp" hide:"true"`
	Debug      bool                 `opt:"d" help:"Enable debug level logging" hide:"true"`
	LogLevel   string               `help:"Set logging level (info, warning, debug, error, fatal, critical)"`
	Idemix     api.Idemix
}

ClientConfig is the fabric-ca client's config

func (*ClientConfig) Enroll added in v1.9.0

func (c *ClientConfig) Enroll(rawurl, home string) (*EnrollmentResponse, error)

Enroll a client given the server's URL and the client's home directory. The URL may be of the form: http://user:pass@host:port where user and pass are the enrollment ID and secret, respectively.

func (*ClientConfig) GenCSR added in v1.9.0

func (c *ClientConfig) GenCSR(home string) error

GenCSR generates a certificate signing request and writes the CSR to a file.

type DN added in v1.9.0

type DN struct {
	// contains filtered or unexported fields
}

DN is the distinguished name inside a certificate

type EnrollmentResponse

type EnrollmentResponse struct {
	Identity *Identity
	CAInfo   GetCAInfoResponse
}

EnrollmentResponse is the response from Client.Enroll and Identity.Reenroll

type GetCAInfoResponse

type GetCAInfoResponse struct {
	// CAName is the name of the CA
	CAName string
	// CAChain is the PEM-encoded bytes of the fabric-ca-server's CA chain.
	// The 1st element of the chain is the root CA cert
	CAChain []byte
	// Idemix issuer public key of the CA
	IssuerPublicKey []byte
	// Idemix issuer revocation public key of the CA
	IssuerRevocationPublicKey []byte
	// Version of the server
	Version string
}

GetCAInfoResponse is the response from the GetCAInfo call

type Identity

type Identity struct {
	// contains filtered or unexported fields
}

Identity is fabric-ca's implementation of an identity

func NewIdentity

func NewIdentity(client *Client, name string, creds []credential.Credential) *Identity

NewIdentity is the constructor for identity

func (*Identity) AddAffiliation

func (i *Identity) AddAffiliation(req *api.AddAffiliationRequest) (*api.AffiliationResponse, error)

AddAffiliation adds a new affiliation to the server

func (*Identity) AddIdentity

func (i *Identity) AddIdentity(req *api.AddIdentityRequest) (*api.IdentityResponse, error)

AddIdentity adds a new identity to the server

func (*Identity) Delete

func (i *Identity) Delete(endpoint string, result interface{}, queryParam map[string]string) error

Delete sends a delete request to an endpoint

func (*Identity) GenCRL added in v1.9.0

func (i *Identity) GenCRL(req *api.GenCRLRequest) (*api.GenCRLResponse, error)

GenCRL generates CRL

func (*Identity) Get

func (i *Identity) Get(endpoint, caname string, result interface{}) error

Get sends a get request to an endpoint

func (*Identity) GetAffiliation

func (i *Identity) GetAffiliation(affiliation, caname string) (*api.AffiliationResponse, error)

GetAffiliation returns information about the requested affiliation

func (*Identity) GetAllAffiliations

func (i *Identity) GetAllAffiliations(caname string) (*api.AffiliationResponse, error)

GetAllAffiliations returns all affiliations that the caller is authorized to see

func (*Identity) GetAllIdentities

func (i *Identity) GetAllIdentities(caname string, cb func(*json.Decoder) error) error

GetAllIdentities returns all identities that the caller is authorized to see

func (*Identity) GetCRI added in v1.9.0

func (i *Identity) GetCRI(req *api.GetCRIRequest) (*api.GetCRIResponse, error)

GetCRI gets Idemix credential revocation information (CRI)

func (*Identity) GetCertificates added in v1.9.0

func (i *Identity) GetCertificates(req *api.GetCertificatesRequest, cb func(*json.Decoder) error) error

GetCertificates returns all certificates that the caller is authorized to see

func (*Identity) GetClient added in v1.9.0

func (i *Identity) GetClient() *Client

GetClient returns the client associated with this identity

func (*Identity) GetECert

func (i *Identity) GetECert() *x509.Signer

GetECert returns the enrollment certificate signer for this identity Returns nil if the identity does not have a X509 credential

func (*Identity) GetIdemixCredential added in v1.9.0

func (i *Identity) GetIdemixCredential() credential.Credential

GetIdemixCredential returns Idemix credential of this identity

func (*Identity) GetIdentity

func (i *Identity) GetIdentity(id, caname string) (*api.GetIDResponse, error)

GetIdentity returns information about the requested identity

func (*Identity) GetName

func (i *Identity) GetName() string

GetName returns the identity name

func (*Identity) GetStreamResponse

func (i *Identity) GetStreamResponse(endpoint string, queryParam map[string]string, stream string, cb func(*json.Decoder) error) error

GetStreamResponse sends a request to an endpoint and streams the response

func (*Identity) GetX509Credential added in v1.9.0

func (i *Identity) GetX509Credential() credential.Credential

GetX509Credential returns X509 credential of this identity

func (*Identity) ModifyAffiliation

func (i *Identity) ModifyAffiliation(req *api.ModifyAffiliationRequest) (*api.AffiliationResponse, error)

ModifyAffiliation renames an existing affiliation on the server

func (*Identity) ModifyIdentity

func (i *Identity) ModifyIdentity(req *api.ModifyIdentityRequest) (*api.IdentityResponse, error)

ModifyIdentity modifies an existing identity on the server

func (*Identity) Post

func (i *Identity) Post(endpoint string, reqBody []byte, result interface{}, queryParam map[string]string) error

Post sends arbitrary request body (reqBody) to an endpoint. This adds an authorization header which contains the signature of this identity over the body and non-signature part of the authorization header. The return value is the body of the response.

func (*Identity) Put

func (i *Identity) Put(endpoint string, reqBody []byte, queryParam map[string]string, result interface{}) error

Put sends a put request to an endpoint

func (*Identity) Reenroll

Reenroll reenrolls an existing Identity and returns a new Identity @param req The reenrollment request

func (*Identity) Register

func (i *Identity) Register(req *api.RegistrationRequest) (rr *api.RegistrationResponse, err error)

Register registers a new identity @param req The registration request

func (*Identity) RegisterAndEnroll added in v1.9.0

func (i *Identity) RegisterAndEnroll(req *api.RegistrationRequest) (*Identity, error)

RegisterAndEnroll registers and enrolls an identity and returns the identity

func (*Identity) RemoveAffiliation

func (i *Identity) RemoveAffiliation(req *api.RemoveAffiliationRequest) (*api.AffiliationResponse, error)

RemoveAffiliation removes an existing affiliation from the server

func (*Identity) RemoveIdentity

func (i *Identity) RemoveIdentity(req *api.RemoveIdentityRequest) (*api.IdentityResponse, error)

RemoveIdentity removes a new identity from the server

func (*Identity) Revoke

Revoke the identity associated with 'id'

func (*Identity) RevokeSelf added in v1.9.0

func (i *Identity) RevokeSelf() (*api.RevocationResponse, error)

RevokeSelf revokes the current identity and all certificates

func (*Identity) Store added in v1.9.0

func (i *Identity) Store() error

Store writes my identity info to disk

type IntermediateCA added in v1.9.0

type IntermediateCA struct {
	ParentServer ParentServer
	TLS          tls.ClientTLSConfig
	Enrollment   api.EnrollmentRequest
}

IntermediateCA contains parent server information, TLS configuration, and enrollment request for an intermediate CA

type ParentServer added in v1.9.0

type ParentServer struct {
	URL    string `opt:"u" help:"URL of the parent fabric-ca-server (e.g. http://<username>:<password>@<address>:<port)" mask:"url"`
	CAName string `help:"Name of the CA to connect to on fabric-ca-server"`
}

ParentServer contains URL for the parent server and the name of CA inside the server to connect to

func (ParentServer) String added in v1.9.0

func (parent ParentServer) String() string

type Server added in v1.9.0

type Server struct {
	// The home directory for the server.
	HomeDir string
	// BlockingStart determines if Start is blocking.
	// It is non-blocking by default.
	BlockingStart bool
	// The server's configuration
	Config *ServerConfig
	// Metrics are the metrics that the server tracks for API calls.
	Metrics servermetrics.Metrics
	// Operations is responsible for the server's operation information.
	Operations operationsServer
	// CA is the default certificate authority for the server.
	CA
	// contains filtered or unexported fields
}

Server is the fabric-ca server

func TestGetIntermediateServer added in v1.9.0

func TestGetIntermediateServer(idx int, t *testing.T) *Server

TestGetIntermediateServer creates a server with intermediate server configuration

func TestGetRootServer added in v1.9.0

func TestGetRootServer(t *testing.T) *Server

TestGetRootServer creates a server with root configuration

func TestGetServer added in v1.9.0

func TestGetServer(port int, home, parentURL string, maxEnroll int, t *testing.T) *Server

TestGetServer creates and returns a pointer to a server struct

func TestGetServer2 added in v1.9.0

func TestGetServer2(deleteHome bool, port int, home, parentURL string, maxEnroll int, t *testing.T) *Server

TestGetServer2 creates and returns a pointer to a server struct, with an option of whether or not to remove the home directory first

func (*Server) GetCA added in v1.9.0

func (s *Server) GetCA(name string) (*CA, error)

GetCA returns the CA given its name

func (*Server) HealthCheck added in v1.9.0

func (s *Server) HealthCheck(ctx context.Context) error

HealthCheck pings the database to determine if it is reachable

func (*Server) Init added in v1.9.0

func (s *Server) Init(renew bool) (err error)

Init initializes a fabric-ca server

func (*Server) Log added in v1.9.0

func (s *Server) Log(keyvals ...interface{}) error

Log is a function required to meet the interface required by statsd

func (*Server) RegisterBootstrapUser added in v1.9.0

func (s *Server) RegisterBootstrapUser(user, pass, affiliation string) error

RegisterBootstrapUser registers the bootstrap user with appropriate privileges

func (*Server) Start added in v1.9.0

func (s *Server) Start() (err error)

Start the fabric-ca server

func (*Server) Stop added in v1.9.0

func (s *Server) Stop() error

Stop the server WARNING: This forcefully closes the listening socket and may cause requests in transit to fail, and so is only used for testing. A graceful shutdown will be supported with golang 1.8.

type ServerConfig

type ServerConfig struct {
	// Listening port for the server
	Port int `def:"7054" opt:"p" help:"Listening port of fabric-ca-server"`
	// Bind address for the server
	Address string `def:"0.0.0.0" help:"Listening address of fabric-ca-server"`
	// Cross-Origin Resource Sharing settings for the server
	CORS CORS
	// Enables debug logging
	Debug bool `def:"false" opt:"d" help:"Enable debug level logging" hide:"true"`
	// Sets the logging level on the server
	LogLevel string `help:"Set logging level (info, warning, debug, error, fatal, critical)"`
	// TLS for the server's listening endpoint
	TLS tls.ServerTLSConfig
	// Optional client config for an intermediate server which acts as a client
	// of the root (or parent) server
	Client *ClientConfig `skip:"true"`
	// CACfg is the default CA's config
	CAcfg CAConfig `skip:"true"`
	// The names of the CA configuration files
	// This is empty unless there are non-default CAs served by this server
	CAfiles []string `help:"A list of comma-separated CA configuration files"`
	// The number of non-default CAs, which is useful for a dev environment to
	// quickly start any number of CAs in a single server
	CAcount int `def:"0" help:"Number of non-default CA instances"`
	// Size limit of an acceptable CRL in bytes
	CRLSizeLimit int `def:"512000" help:"Size limit of an acceptable CRL in bytes"`
	// CompMode1_3 determines if to run in comptability for version 1.3
	CompMode1_3 bool `skip:"true"`
	// Metrics contains the configuration for provider and statsd
	Metrics operations.MetricsOptions `hide:"true"`
	// Operations contains the configuration for the operations servers
	Operations operations.Options `hide:"true"`
}

ServerConfig is the fabric-ca server's config The tags are recognized by the RegisterFlags function in fabric-ca/util/flag.go and are as follows: "def" - the default value of the field; "opt" - the optional one character short name to use on the command line; "help" - the help message to display on the command line; "skip" - to skip the field.

type ServerRequestContext added in v1.9.0

type ServerRequestContext interface {
	BasicAuthentication() (string, error)
	TokenAuthentication() (string, error)
	GetCaller() (user.User, error)
	HasRole(role string) error
	ChunksToDeliver(string) (int, error)
	GetReq() *http.Request
	GetQueryParm(name string) string
	GetBoolQueryParm(name string) (bool, error)
	GetResp() http.ResponseWriter
	GetCertificates(cr.CertificateRequest, string) (*sqlx.Rows, error)
	IsLDAPEnabled() bool
	ReadBody(interface{}) error
	ContainsAffiliation(string) error
	CanActOnType(string) error
}

ServerRequestContext defines the functionality of a server request context object

Directories

Path Synopsis
client
common
log
Code generated by counterfeiter.
Code generated by counterfeiter.
server
certificaterequest/mocks
Code generated by mockery v1.0.0.
Code generated by mockery v1.0.0.
db
db/mocks
Code generated by counterfeiter.
Code generated by counterfeiter.
db/mysql/mocks
Code generated by counterfeiter.
Code generated by counterfeiter.
db/postgres/mocks
Code generated by counterfeiter.
Code generated by counterfeiter.
db/sqlite/mocks
Code generated by counterfeiter.
Code generated by counterfeiter.
idemix/mocks
Code generated by mockery v1.0.0.
Code generated by mockery v1.0.0.
user/mocks
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL