本文整理汇总了Golang中crypto/rsa.PrivateKey.Q方法的典型用法代码示例。如果您正苦于以下问题:Golang PrivateKey.Q方法的具体用法?Golang PrivateKey.Q怎么用?Golang PrivateKey.Q使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类crypto/rsa.PrivateKey
的用法示例。
在下文中一共展示了PrivateKey.Q方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: parseRSAPrivateKey
func (pk *PrivateKey) parseRSAPrivateKey(data []byte) (err os.Error) {
rsaPub := pk.PublicKey.PublicKey.(*rsa.PublicKey)
rsaPriv := new(rsa.PrivateKey)
rsaPriv.PublicKey = *rsaPub
buf := bytes.NewBuffer(data)
d, _, err := readMPI(buf)
if err != nil {
return
}
p, _, err := readMPI(buf)
if err != nil {
return
}
q, _, err := readMPI(buf)
if err != nil {
return
}
rsaPriv.D = new(big.Int).SetBytes(d)
rsaPriv.P = new(big.Int).SetBytes(p)
rsaPriv.Q = new(big.Int).SetBytes(q)
pk.PrivateKey = rsaPriv
pk.Encrypted = false
pk.encryptedData = nil
return nil
}
示例2: Base64ToPriv
// Convert string to an RSA private key
func Base64ToPriv(s string) (*rsa.PrivateKey, os.Error) {
if len(s) == 0 {
return nil, nil
}
if !verifyCRC(s) {
return nil, nil
}
s = s[0 : len(s)-1]
enc := base64.StdEncoding
pk := rsa.PrivateKey{}
buf := make([]byte, 4096) // shoud be big enough
src := []byte(s)
k := -1
// N
if k = firstComma(src); k < 0 {
return nil, os.ErrorString("missing delimiter")
}
n, err := enc.Decode(buf, src[0:k])
if err != nil {
return nil, err
}
pk.N = &big.Int{}
pk.N.SetBytes(buf[0:n])
src = src[k+1:]
// E
if k = firstComma(src); k < 0 {
return nil, os.ErrorString("missing delimiter")
}
n, err = enc.Decode(buf, src[0:k])
if err != nil {
return nil, err
}
pke64, err := bytesToInt64(buf[0:n])
if err != nil {
return nil, err
}
pk.E = int(pke64)
src = src[k+1:]
// D
if k = firstComma(src); k < 0 {
return nil, os.ErrorString("missing delimiter")
}
n, err = enc.Decode(buf, src[0:k])
if err != nil {
return nil, err
}
pk.D = &big.Int{}
pk.D.SetBytes(buf[0:n])
src = src[k+1:]
// P
if k = firstComma(src); k < 0 {
return nil, os.ErrorString("missing delimiter")
}
n, err = enc.Decode(buf, src[0:k])
if err != nil {
return nil, err
}
pk.P = &big.Int{}
pk.P.SetBytes(buf[0:n])
src = src[k+1:]
// Q
n, err = enc.Decode(buf, src)
if err != nil {
return nil, err
}
pk.Q = &big.Int{}
pk.Q.SetBytes(buf[0:n])
return &pk, nil
}