mirror of
https://github.com/golang/go
synced 2024-11-22 06:34:40 -07:00
openpgp: add PublicKey KeyId string accessors
R=agl, agl1 CC=golang-dev https://golang.org/cl/4297041
This commit is contained in:
parent
a569725141
commit
5245b27ed8
@ -11,6 +11,7 @@ import (
|
|||||||
"crypto/rsa"
|
"crypto/rsa"
|
||||||
"crypto/sha1"
|
"crypto/sha1"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"fmt"
|
||||||
"hash"
|
"hash"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
@ -239,6 +240,18 @@ func (pk *PublicKey) VerifyUserIdSignature(id string, sig *Signature) (err os.Er
|
|||||||
return pk.VerifySignature(h, sig)
|
return pk.VerifySignature(h, sig)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// KeyIdString returns the public key's fingerprint in capital hex
|
||||||
|
// (e.g. "6C7EE1B8621CC013").
|
||||||
|
func (pk *PublicKey) KeyIdString() string {
|
||||||
|
return fmt.Sprintf("%X", pk.Fingerprint[12:20])
|
||||||
|
}
|
||||||
|
|
||||||
|
// KeyIdShortString returns the short form of public key's fingerprint
|
||||||
|
// in capital hex, as shown by gpg --list-keys (e.g. "621CC013").
|
||||||
|
func (pk *PublicKey) KeyIdShortString() string {
|
||||||
|
return fmt.Sprintf("%X", pk.Fingerprint[16:20])
|
||||||
|
}
|
||||||
|
|
||||||
// A parsedMPI is used to store the contents of a big integer, along with the
|
// A parsedMPI is used to store the contents of a big integer, along with the
|
||||||
// bit length that was specified in the original input. This allows the MPI to
|
// bit length that was specified in the original input. This allows the MPI to
|
||||||
// be reserialized exactly.
|
// be reserialized exactly.
|
||||||
|
@ -16,9 +16,11 @@ var pubKeyTests = []struct {
|
|||||||
creationTime uint32
|
creationTime uint32
|
||||||
pubKeyAlgo PublicKeyAlgorithm
|
pubKeyAlgo PublicKeyAlgorithm
|
||||||
keyId uint64
|
keyId uint64
|
||||||
|
keyIdString string
|
||||||
|
keyIdShort string
|
||||||
}{
|
}{
|
||||||
{rsaPkDataHex, rsaFingerprintHex, 0x4d3c5c10, PubKeyAlgoRSA, 0xa34d7e18c20c31bb},
|
{rsaPkDataHex, rsaFingerprintHex, 0x4d3c5c10, PubKeyAlgoRSA, 0xa34d7e18c20c31bb, "A34D7E18C20C31BB", "C20C31BB"},
|
||||||
{dsaPkDataHex, dsaFingerprintHex, 0x4d432f89, PubKeyAlgoDSA, 0x8e8fbe54062f19ed},
|
{dsaPkDataHex, dsaFingerprintHex, 0x4d432f89, PubKeyAlgoDSA, 0x8e8fbe54062f19ed, "8E8FBE54062F19ED", "062F19ED"},
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPublicKeyRead(t *testing.T) {
|
func TestPublicKeyRead(t *testing.T) {
|
||||||
@ -46,6 +48,12 @@ func TestPublicKeyRead(t *testing.T) {
|
|||||||
if pk.KeyId != test.keyId {
|
if pk.KeyId != test.keyId {
|
||||||
t.Errorf("#%d: bad keyid got:%x want:%x", i, pk.KeyId, test.keyId)
|
t.Errorf("#%d: bad keyid got:%x want:%x", i, pk.KeyId, test.keyId)
|
||||||
}
|
}
|
||||||
|
if g, e := pk.KeyIdString(), test.keyIdString; g != e {
|
||||||
|
t.Errorf("#%d: bad KeyIdString got:%q want:%q", i, g, e)
|
||||||
|
}
|
||||||
|
if g, e := pk.KeyIdShortString(), test.keyIdShort; g != e {
|
||||||
|
t.Errorf("#%d: bad KeyIdShortString got:%q want:%q", i, g, e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user