Fix private Key reading (only for RSA atm)

This commit is contained in:
Miek Gieben 2011-01-16 19:03:19 +01:00
parent 2cfa45408d
commit 79f61af370
2 changed files with 17 additions and 8 deletions

View File

@ -127,26 +127,34 @@ func (k *RR_DNSKEY) PrivateKeySetString(s string) (PrivateKey, os.Error) {
return nil, &Error{Error: "v1.3 supported"} return nil, &Error{Error: "v1.3 supported"}
} }
case "Algorithm:": case "Algorithm:":
// simple switch on the string a, _ := strconv.Atoi(right)
if a == 0 {
return nil, &Error{Error: "incorrect algorithm"}
}
k.Algorithm = uint8(a)
k.Protocol = 3
case "Modulus:", "PublicExponent:", "PrivateExponent:", "Prime1:", "Prime2:": case "Modulus:", "PublicExponent:", "PrivateExponent:", "Prime1:", "Prime2:":
v, err := packBase64([]byte(right)) v, err := packBase64([]byte(right))
if err != nil { if err != nil {
return nil, err return nil, err
} }
if right == "Modulus:" { if left == "Modulus:" {
p.PublicKey.N = big.NewInt(0) p.PublicKey.N = big.NewInt(0)
p.PublicKey.N.SetBytes(v) p.PublicKey.N.SetBytes(v)
} }
if right == "PublicExponent:" { /* p.PublicKey.E */ if left == "PublicExponent:" { /* p.PublicKey.E */
p.PublicKey.E = 3 p.PublicKey.E = 3
} }
if right == "PrivateExponent:" { if left == "PrivateExponent:" {
p.D = big.NewInt(0)
p.D.SetBytes(v) p.D.SetBytes(v)
} }
if right == "Prime1:" { if left == "Prime1:" {
p.P = big.NewInt(0)
p.P.SetBytes(v) p.P.SetBytes(v)
} }
if right == "Prime2:" { if left == "Prime2:" {
p.Q = big.NewInt(0)
p.Q.SetBytes(v) p.Q.SetBytes(v)
} }
case "Exponent1:", "Exponent2:", "Coefficient:": case "Exponent1:", "Exponent2:", "Coefficient:":
@ -160,7 +168,7 @@ func (k *RR_DNSKEY) PrivateKeySetString(s string) (PrivateKey, os.Error) {
} }
line, _ = r.ReadBytes('\n') line, _ = r.ReadBytes('\n')
} }
println(p.PublicKey.N)
k.setPubKeyRSA(p.PublicKey.E, p.PublicKey.N) k.setPubKeyRSA(p.PublicKey.E, p.PublicKey.N)
k.Algorithm = AlgRSASHA1 // ANDERS!
return p, nil return p, nil
} }

View File

@ -40,7 +40,8 @@ Publish: 20101221142359
Activate: 20101221142359` Activate: 20101221142359`
k := new(RR_DNSKEY) k := new(RR_DNSKEY)
p,_ := k.PrivateKeySetString(a) p,err := k.PrivateKeySetString(a)
println(err)
p = p p = p
fmt.Printf("%v\n", k) fmt.Printf("%v\n", k)
} }