Fix: RSA key export and its test
This commit is contained in:
parent
f2aff624fc
commit
3fd8a8eef6
|
@ -249,12 +249,13 @@ func Test65534(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDnskey(t *testing.T) {
|
func TestDnskey(t *testing.T) {
|
||||||
// f, _ := os.Open("t/Kmiek.nl.+010+05240.key")
|
pubkey, err := ReadRR(strings.NewReader(`
|
||||||
pubkey, _ := ReadRR(strings.NewReader(`
|
|
||||||
miek.nl. IN DNSKEY 256 3 10 AwEAAZuMCu2FdugHkTrXYgl5qixvcDw1aDDlvL46/xJKbHBAHY16fNUb2b65cwko2Js/aJxUYJbZk5dwCDZxYfrfbZVtDPQuc3o8QaChVxC7/JYz2AHc9qHvqQ1j4VrH71RWINlQo6VYjzN/BGpMhOZoZOEwzp1HfsOE3lNYcoWU1smL ;{id = 5240 (zsk), size = 1024b}
|
miek.nl. IN DNSKEY 256 3 10 AwEAAZuMCu2FdugHkTrXYgl5qixvcDw1aDDlvL46/xJKbHBAHY16fNUb2b65cwko2Js/aJxUYJbZk5dwCDZxYfrfbZVtDPQuc3o8QaChVxC7/JYz2AHc9qHvqQ1j4VrH71RWINlQo6VYjzN/BGpMhOZoZOEwzp1HfsOE3lNYcoWU1smL ;{id = 5240 (zsk), size = 1024b}
|
||||||
`), "Kmiek.nl.+010+05240.key")
|
`), "Kmiek.nl.+010+05240.key")
|
||||||
privkey, _ := pubkey.(*DNSKEY).ReadPrivateKey(strings.NewReader(`
|
if err != nil {
|
||||||
Private-key-format: v1.2
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
privStr := `Private-key-format: v1.3
|
||||||
Algorithm: 10 (RSASHA512)
|
Algorithm: 10 (RSASHA512)
|
||||||
Modulus: m4wK7YV26AeROtdiCXmqLG9wPDVoMOW8vjr/EkpscEAdjXp81RvZvrlzCSjYmz9onFRgltmTl3AINnFh+t9tlW0M9C5zejxBoKFXELv8ljPYAdz2oe+pDWPhWsfvVFYg2VCjpViPM38EakyE5mhk4TDOnUd+w4TeU1hyhZTWyYs=
|
Modulus: m4wK7YV26AeROtdiCXmqLG9wPDVoMOW8vjr/EkpscEAdjXp81RvZvrlzCSjYmz9onFRgltmTl3AINnFh+t9tlW0M9C5zejxBoKFXELv8ljPYAdz2oe+pDWPhWsfvVFYg2VCjpViPM38EakyE5mhk4TDOnUd+w4TeU1hyhZTWyYs=
|
||||||
PublicExponent: AQAB
|
PublicExponent: AQAB
|
||||||
|
@ -264,13 +265,21 @@ Prime2: xA1bF8M0RTIQ6+A11AoVG6GIR/aPGg5sogRkIZ7ID/sF6g9HMVU/CM2TqVEBJLRPp73cv6Ze
|
||||||
Exponent1: xzkblyZ96bGYxTVZm2/vHMOXswod4KWIyMoOepK6B/ZPcZoIT6omLCgtypWtwHLfqyCz3MK51Nc0G2EGzg8rFQ==
|
Exponent1: xzkblyZ96bGYxTVZm2/vHMOXswod4KWIyMoOepK6B/ZPcZoIT6omLCgtypWtwHLfqyCz3MK51Nc0G2EGzg8rFQ==
|
||||||
Exponent2: Pu5+mCEb7T5F+kFNZhQadHUklt0JUHbi3hsEvVoHpEGSw3BGDQrtIflDde0/rbWHgDPM4WQY+hscd8UuTXrvLw==
|
Exponent2: Pu5+mCEb7T5F+kFNZhQadHUklt0JUHbi3hsEvVoHpEGSw3BGDQrtIflDde0/rbWHgDPM4WQY+hscd8UuTXrvLw==
|
||||||
Coefficient: UuRoNqe7YHnKmQzE6iDWKTMIWTuoqqrFAmXPmKQnC+Y+BQzOVEHUo9bXdDnoI9hzXP1gf8zENMYwYLeWpuYlFQ==
|
Coefficient: UuRoNqe7YHnKmQzE6iDWKTMIWTuoqqrFAmXPmKQnC+Y+BQzOVEHUo9bXdDnoI9hzXP1gf8zENMYwYLeWpuYlFQ==
|
||||||
`), "Kmiek.nl.+010+05240.private")
|
`
|
||||||
|
privkey, err := pubkey.(*DNSKEY).ReadPrivateKey(strings.NewReader(privStr),
|
||||||
|
"Kmiek.nl.+010+05240.private")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
if pubkey.(*DNSKEY).PublicKey != "AwEAAZuMCu2FdugHkTrXYgl5qixvcDw1aDDlvL46/xJKbHBAHY16fNUb2b65cwko2Js/aJxUYJbZk5dwCDZxYfrfbZVtDPQuc3o8QaChVxC7/JYz2AHc9qHvqQ1j4VrH71RWINlQo6VYjzN/BGpMhOZoZOEwzp1HfsOE3lNYcoWU1smL" {
|
if pubkey.(*DNSKEY).PublicKey != "AwEAAZuMCu2FdugHkTrXYgl5qixvcDw1aDDlvL46/xJKbHBAHY16fNUb2b65cwko2Js/aJxUYJbZk5dwCDZxYfrfbZVtDPQuc3o8QaChVxC7/JYz2AHc9qHvqQ1j4VrH71RWINlQo6VYjzN/BGpMhOZoZOEwzp1HfsOE3lNYcoWU1smL" {
|
||||||
t.Log("pubkey is not what we've read")
|
t.Log("pubkey is not what we've read")
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
// Coefficient looks fishy...
|
if pubkey.(*DNSKEY).PrivateKeyString(privkey) != privStr {
|
||||||
t.Logf("%s", pubkey.(*DNSKEY).PrivateKeyString(privkey))
|
t.Log("privkey is not what we've read")
|
||||||
|
t.Logf("%v", pubkey.(*DNSKEY).PrivateKeyString(privkey))
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTag(t *testing.T) {
|
func TestTag(t *testing.T) {
|
||||||
|
|
|
@ -103,12 +103,11 @@ func (r *DNSKEY) PrivateKeyString(p PrivateKey) (s string) {
|
||||||
// Calculate Exponent1/2 and Coefficient as per: http://en.wikipedia.org/wiki/RSA#Using_the_Chinese_remainder_algorithm
|
// Calculate Exponent1/2 and Coefficient as per: http://en.wikipedia.org/wiki/RSA#Using_the_Chinese_remainder_algorithm
|
||||||
// and from: http://code.google.com/p/go/issues/detail?id=987
|
// and from: http://code.google.com/p/go/issues/detail?id=987
|
||||||
one := big.NewInt(1)
|
one := big.NewInt(1)
|
||||||
minusone := big.NewInt(-1)
|
|
||||||
p_1 := big.NewInt(0).Sub(t.Primes[0], one)
|
p_1 := big.NewInt(0).Sub(t.Primes[0], one)
|
||||||
q_1 := big.NewInt(0).Sub(t.Primes[1], one)
|
q_1 := big.NewInt(0).Sub(t.Primes[1], one)
|
||||||
exp1 := big.NewInt(0).Mod(t.D, p_1)
|
exp1 := big.NewInt(0).Mod(t.D, p_1)
|
||||||
exp2 := big.NewInt(0).Mod(t.D, q_1)
|
exp2 := big.NewInt(0).Mod(t.D, q_1)
|
||||||
coeff := big.NewInt(0).Exp(t.Primes[1], minusone, t.Primes[0])
|
coeff := big.NewInt(0).ModInverse(t.Primes[1], t.Primes[0])
|
||||||
|
|
||||||
exponent1 := toBase64(exp1.Bytes())
|
exponent1 := toBase64(exp1.Bytes())
|
||||||
exponent2 := toBase64(exp2.Bytes())
|
exponent2 := toBase64(exp2.Bytes())
|
||||||
|
@ -116,7 +115,7 @@ func (r *DNSKEY) PrivateKeyString(p PrivateKey) (s string) {
|
||||||
|
|
||||||
s = _FORMAT +
|
s = _FORMAT +
|
||||||
"Algorithm: " + algorithm + "\n" +
|
"Algorithm: " + algorithm + "\n" +
|
||||||
"Modules: " + modulus + "\n" +
|
"Modulus: " + modulus + "\n" +
|
||||||
"PublicExponent: " + publicExponent + "\n" +
|
"PublicExponent: " + publicExponent + "\n" +
|
||||||
"PrivateExponent: " + privateExponent + "\n" +
|
"PrivateExponent: " + privateExponent + "\n" +
|
||||||
"Prime1: " + prime1 + "\n" +
|
"Prime1: " + prime1 + "\n" +
|
||||||
|
|
Loading…
Reference in New Issue