github.com/adecaro/fabric-ca@v2.0.0-alpha+incompatible/lib/server/idemix/config.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package idemix
     8  
     9  import (
    10  	"path/filepath"
    11  
    12  	"github.com/hyperledger/fabric-ca/util"
    13  )
    14  
    15  const (
    16  	// DefaultIssuerPublicKeyFile is the default name of the file that contains issuer public key
    17  	DefaultIssuerPublicKeyFile = "IssuerPublicKey"
    18  	// DefaultIssuerSecretKeyFile is the default name of the file that contains issuer secret key
    19  	DefaultIssuerSecretKeyFile = "IssuerSecretKey"
    20  	// DefaultRevocationPublicKeyFile is the name of the file where revocation public key is stored
    21  	DefaultRevocationPublicKeyFile = "IssuerRevocationPublicKey"
    22  	// DefaultRevocationPrivateKeyFile is the name of the file where revocation private key is stored
    23  	DefaultRevocationPrivateKeyFile = "IssuerRevocationPrivateKey"
    24  	// KeystoreDir is the keystore directory where all keys are stored. It is relative to the server home directory.
    25  	KeystoreDir = "msp/keystore"
    26  )
    27  
    28  // Config encapsulates Idemix related the configuration options
    29  type Config struct {
    30  	IssuerPublicKeyfile      string `def:"IssuerPublicKey" skip:"true" help:"Name of the file that contains marshalled bytes of CA's Idemix issuer public key"`
    31  	IssuerSecretKeyfile      string `def:"IssuerSecretKey" skip:"true" help:"Name of the file that contains CA's Idemix issuer secret key"`
    32  	RevocationPublicKeyfile  string `def:"IssuerRevocationPublicKey" skip:"true" help:"Name of the file that contains Idemix issuer revocation public key"`
    33  	RevocationPrivateKeyfile string `def:"IssuerRevocationPrivateKey" skip:"true" help:"Name of the file that contains Idemix issuer revocation private key"`
    34  	RHPoolSize               int    `def:"100" help:"Specifies revocation handle pool size"`
    35  	NonceExpiration          string `def:"15s" help:"Duration after which a nonce expires"`
    36  	NonceSweepInterval       string `def:"15m" help:"Interval at which expired nonces are deleted"`
    37  }
    38  
    39  // InitConfig initializes Idemix configuration
    40  func (c *Config) init(homeDir string) error {
    41  	c.IssuerPublicKeyfile = DefaultIssuerPublicKeyFile
    42  	c.IssuerSecretKeyfile = filepath.Join(KeystoreDir, DefaultIssuerSecretKeyFile)
    43  	c.RevocationPublicKeyfile = DefaultRevocationPublicKeyFile
    44  	c.RevocationPrivateKeyfile = filepath.Join(KeystoreDir, DefaultRevocationPrivateKeyFile)
    45  	if c.RHPoolSize == 0 {
    46  		c.RHPoolSize = DefaultRevocationHandlePoolSize
    47  	}
    48  	if c.NonceExpiration == "" {
    49  		c.NonceExpiration = DefaultNonceExpiration
    50  	}
    51  	if c.NonceSweepInterval == "" {
    52  		c.NonceSweepInterval = DefaultNonceSweepInterval
    53  	}
    54  	fields := []*string{
    55  		&c.IssuerPublicKeyfile,
    56  		&c.IssuerSecretKeyfile,
    57  		&c.RevocationPublicKeyfile,
    58  		&c.RevocationPrivateKeyfile,
    59  	}
    60  	err := util.MakeFileNamesAbsolute(fields, homeDir)
    61  	if err != nil {
    62  		return err
    63  	}
    64  	return nil
    65  }