diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-04-06 18:53:33 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2017-04-06 18:53:33 +0800 |
commit | c76ad944920300be58446ddd1a50c8d693957774 (patch) | |
tree | ec9aed051e82deb3c479ab1b7ab50aa2c07d9efb /vendor/github.com/dgrijalva/jwt-go/rsa_utils.go | |
parent | 3d8de95f999de6f52f0c1605eb2913278f1d87d2 (diff) | |
download | go-tangerine-c76ad944920300be58446ddd1a50c8d693957774.tar go-tangerine-c76ad944920300be58446ddd1a50c8d693957774.tar.gz go-tangerine-c76ad944920300be58446ddd1a50c8d693957774.tar.bz2 go-tangerine-c76ad944920300be58446ddd1a50c8d693957774.tar.lz go-tangerine-c76ad944920300be58446ddd1a50c8d693957774.tar.xz go-tangerine-c76ad944920300be58446ddd1a50c8d693957774.tar.zst go-tangerine-c76ad944920300be58446ddd1a50c8d693957774.zip |
.travis, build: autodelete old unstable archives (#13867)
This commit adds a build step to travis to auto-delete unstable archives older than
14 days (our regular release schedule) from Azure via ci.go purge.
The commit also pulls in the latest Azure storage code, also switching over from
the old import path (github.com/Azure/azure-sdk-for-go) to the new split one
(github.com/Azure/azure-storage-go).
Diffstat (limited to 'vendor/github.com/dgrijalva/jwt-go/rsa_utils.go')
-rw-r--r-- | vendor/github.com/dgrijalva/jwt-go/rsa_utils.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go b/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go new file mode 100644 index 000000000..213a90dbb --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go @@ -0,0 +1,69 @@ +package jwt + +import ( + "crypto/rsa" + "crypto/x509" + "encoding/pem" + "errors" +) + +var ( + ErrKeyMustBePEMEncoded = errors.New("Invalid Key: Key must be PEM encoded PKCS1 or PKCS8 private key") + ErrNotRSAPrivateKey = errors.New("Key is not a valid RSA private key") + ErrNotRSAPublicKey = errors.New("Key is not a valid RSA public key") +) + +// Parse PEM encoded PKCS1 or PKCS8 private key +func ParseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + var parsedKey interface{} + if parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil { + if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { + return nil, err + } + } + + var pkey *rsa.PrivateKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok { + return nil, ErrNotRSAPrivateKey + } + + return pkey, nil +} + +// Parse PEM encoded PKCS1 or PKCS8 public key +func ParseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { + if cert, err := x509.ParseCertificate(block.Bytes); err == nil { + parsedKey = cert.PublicKey + } else { + return nil, err + } + } + + var pkey *rsa.PublicKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PublicKey); !ok { + return nil, ErrNotRSAPublicKey + } + + return pkey, nil +} |