package rsa

Import Path
	crypto/internal/fips140/rsa (on go.dev)

Dependency Relation
	imports 14 packages, and imported by one package


Package-Level Type Names (total 5, in which 4 are exported)
/* sort exporteds by: | */
Export returns the key parameters in big-endian byte slice format. P, Q, dP, dQ, and qInv may be nil if the key was created with NewPrivateKeyWithoutCRT. (*PrivateKey) PublicKey() *PublicKey func GenerateKey(rand io.Reader, bits int) (*PrivateKey, error) func NewPrivateKey(N []byte, e int, d, P, Q []byte) (*PrivateKey, error) func NewPrivateKeyWithoutCRT(N []byte, e int, d []byte) (*PrivateKey, error) func NewPrivateKeyWithPrecomputation(N []byte, e int, d, P, Q, dP, dQ, qInv []byte) (*PrivateKey, error) func DecryptOAEP(hash, mgfHash hash.Hash, priv *PrivateKey, ciphertext []byte, label []byte) ([]byte, error) func DecryptWithCheck(priv *PrivateKey, ciphertext []byte) ([]byte, error) func DecryptWithoutCheck(priv *PrivateKey, ciphertext []byte) ([]byte, error) func SignPKCS1v15(priv *PrivateKey, hash string, hashed []byte) ([]byte, error) func SignPSS(rand io.Reader, priv *PrivateKey, hash hash.Hash, hashed []byte, saltLength int) ([]byte, error)
E int N *bigmod.Modulus Size returns the modulus size in bytes. Raw signatures and ciphertexts for or by this public key will have the same size. func (*PrivateKey).PublicKey() *PublicKey func Encrypt(pub *PublicKey, plaintext []byte) ([]byte, error) func EncryptOAEP(hash, mgfHash hash.Hash, random io.Reader, pub *PublicKey, msg []byte, label []byte) ([]byte, error) func PSSMaxSaltLength(pub *PublicKey, hash hash.Hash) (int, error) func VerifyPKCS1v15(pub *PublicKey, hash string, hashed []byte, sig []byte) error func VerifyPSS(pub *PublicKey, hash hash.Hash, digest []byte, sig []byte) error func VerifyPSSWithSaltLength(pub *PublicKey, hash hash.Hash, digest []byte, sig []byte, saltLength int) error
TestingOnlyLargeExponentPrivateKey is a variant of [PrivateKey] that supports large public exponents. It is only meant for supporting the full ACVP test suite. This type must not be used in production code. (*TestingOnlyLargeExponentPrivateKey) Size() int func TestingOnlyNewLargeExponentPrivateKeyWithPrecomputation(N []byte, e []byte, d, P, Q, dP, dQ, qInv []byte) (*TestingOnlyLargeExponentPrivateKey, error) func TestingOnlyLargeExponentDecryptOAEP(hash, mgfHash hash.Hash, priv *TestingOnlyLargeExponentPrivateKey, ciphertext []byte, label []byte) ([]byte, error)
TestingOnlyLargeExponentPublicKey is a variant of [PublicKey] that supports large public exponents. It is only meant for supporting the full ACVP test suite, which unfortunately forces us to choose between a fixed exponent and the full (2¹⁶, 2²⁵⁶) range. This type must not be used in production code, nor for e values < 2³¹, which instead must use [PublicKey]. E is the public exponent, represented as a big-endian byte slice. N *bigmod.Modulus (*TestingOnlyLargeExponentPublicKey) Size() int func TestingOnlyLargeExponentEncryptOAEP(hash, mgfHash hash.Hash, random io.Reader, pub *TestingOnlyLargeExponentPublicKey, msg []byte, label []byte) ([]byte, error) func TestingOnlyLargeExponentVerifyPKCS1v15(pub *TestingOnlyLargeExponentPublicKey, hash string, hashed []byte, sig []byte) error func TestingOnlyLargeExponentVerifyPSS(pub *TestingOnlyLargeExponentPublicKey, hash hash.Hash, digest []byte, sig []byte) error
Package-Level Functions (total 46, in which 20 are exported)
DecryptOAEP decrypts ciphertext using RSAES-OAEP.
DecryptWithCheck performs the RSA private key operation and checks the result to defend against errors in the CRT computation.
DecryptWithoutCheck performs the RSA private key operation.
Encrypt performs the RSA public key operation.
EncryptOAEP encrypts the given message with RSAES-OAEP.
GenerateKey generates a new RSA key pair of the given bit size. bits must be at least 32. It follows the process described at c2sp.org/det-keygen, which is compliant with FIPS 186-5, Appendix A.1, IFC Key Pair Generation and FIPS 186-5, Appendix A.1.3, Generation of Random Primes that are Probably Prime. The prime candidates are drawn from rand, which in production will be the global DRBG, while in tests can be an HMAC_DRBG as specified in c2sp.org/det-keygen, to allow using its tests vectors.
NewPrivateKey creates a new RSA private key from the given parameters. All values are in big-endian byte slice format, and may have leading zeros or be shorter if leading zeroes were trimmed.
NewPrivateKeyWithoutCRT creates a new RSA private key from the given parameters. This is meant for deprecated multi-prime keys, and is not FIPS 140 compliant.
NewPrivateKeyWithPrecomputation creates a new RSA private key from the given parameters, which include precomputed CRT values.
PSSMaxSaltLength returns the maximum salt length for a given public key and hash function.
SignPKCS1v15 calculates an RSASSA-PKCS1-v1.5 signature. hash is the name of the hash function as returned by [crypto.Hash.String] or the empty string to indicate that the message is signed directly.
SignPSS calculates the signature of hashed using RSASSA-PSS.
TestingOnlyLargeExponentDecryptOAEP decrypts ciphertext using RSAES-OAEP with a private key that has a large public exponent. It is only meant for ACVP testing.
TestingOnlyLargeExponentEncryptOAEP encrypts the given message with RSAES-OAEP using a public key with a large exponent. It is only meant for ACVP testing.
TestingOnlyNewLargeExponentPrivateKeyWithPrecomputation creates a new RSA private key with a large public exponent from the given parameters. It is only meant for ACVP testing.
VerifyPKCS1v15 verifies an RSASSA-PKCS1-v1.5 signature. hash is the name of the hash function as returned by [crypto.Hash.String] or the empty string to indicate that the message is signed directly.
VerifyPSS verifies sig with RSASSA-PSS automatically detecting the salt length.
VerifyPSSWithSaltLength verifies sig with RSASSA-PSS and an expected salt length.
Package-Level Variables (total 7, in which 3 are exported)
Package-Level Constants (total 5, none are exported)