github.com/v2fly/v2ray-core/v5@v5.16.2-0.20240507031116-8191faa6e095/common/protocol/tls/cert/privateKey.go (about)

     1  package cert
     2  
     3  import (
     4  	"crypto/x509/pkix"
     5  	"encoding/asn1"
     6  	"math/big"
     7  )
     8  
     9  type ecPrivateKey struct {
    10  	Version       int
    11  	PrivateKey    []byte
    12  	NamedCurveOID asn1.ObjectIdentifier `asn1:"optional,explicit,tag:0"`
    13  	PublicKey     asn1.BitString        `asn1:"optional,explicit,tag:1"`
    14  }
    15  
    16  type pkcs8 struct {
    17  	Version    int
    18  	Algo       pkix.AlgorithmIdentifier
    19  	PrivateKey []byte
    20  	// optional attributes omitted.
    21  }
    22  
    23  type pkcs1AdditionalRSAPrime struct {
    24  	Prime *big.Int
    25  
    26  	// We ignore these values because rsa will calculate them.
    27  	Exp   *big.Int
    28  	Coeff *big.Int
    29  }
    30  
    31  type pkcs1PrivateKey struct {
    32  	Version int
    33  	N       *big.Int
    34  	E       int
    35  	D       *big.Int
    36  	P       *big.Int
    37  	Q       *big.Int
    38  	// We ignore these values, if present, because rsa will calculate them.
    39  	Dp   *big.Int `asn1:"optional"`
    40  	Dq   *big.Int `asn1:"optional"`
    41  	Qinv *big.Int `asn1:"optional"`
    42  
    43  	AdditionalPrimes []pkcs1AdditionalRSAPrime `asn1:"optional,omitempty"`
    44  }