.auth = cipher_null_auth,
};
-size_t pubkey_null_max_len ( const struct asn1_cursor *key __unused ) {
- return 0;
-}
-
int pubkey_null_encrypt ( const struct asn1_cursor *key __unused,
const struct asn1_cursor *plaintext __unused,
struct asn1_builder *ciphertext __unused ) {
struct pubkey_algorithm pubkey_null = {
.name = "null",
- .max_len = pubkey_null_max_len,
.encrypt = pubkey_null_encrypt,
.decrypt = pubkey_null_decrypt,
.sign = pubkey_null_sign,
return rc;
}
-/**
- * Calculate RSA maximum output length
- *
- * @v key Key
- * @ret max_len Maximum output length
- */
-static size_t rsa_max_len ( const struct asn1_cursor *key ) {
- struct asn1_cursor modulus;
- struct asn1_cursor exponent;
- int rc;
-
- /* Parse moduli and exponents */
- if ( ( rc = rsa_parse_mod_exp ( &modulus, &exponent, key ) ) != 0 ) {
- /* Return a zero maximum length on error */
- return 0;
- }
-
- /* Output length can never exceed modulus length */
- return modulus.len;
-}
-
/**
* Perform RSA cipher operation
*
/** RSA public-key algorithm */
struct pubkey_algorithm rsa_algorithm = {
.name = "rsa",
- .max_len = rsa_max_len,
.encrypt = rsa_encrypt,
.decrypt = rsa_decrypt,
.sign = rsa_sign,
struct pubkey_algorithm {
/** Algorithm name */
const char *name;
- /** Calculate maximum output length
- *
- * @v key Key
- * @ret max_len Maximum output length
- */
- size_t ( * max_len ) ( const struct asn1_cursor *key );
/** Encrypt
*
* @v key Key
return cipher->authsize;
}
-static inline __attribute__ (( always_inline )) size_t
-pubkey_max_len ( struct pubkey_algorithm *pubkey,
- const struct asn1_cursor *key ) {
- return pubkey->max_len ( key );
-}
-
static inline __attribute__ (( always_inline )) int
pubkey_encrypt ( struct pubkey_algorithm *pubkey, const struct asn1_cursor *key,
const struct asn1_cursor *plaintext,
size_t len );
extern void cipher_null_auth ( void *ctx, void *auth );
-extern size_t pubkey_null_max_len ( const struct asn1_cursor *key );
extern int pubkey_null_encrypt ( const struct asn1_cursor *key,
const struct asn1_cursor *plaintext,
struct asn1_builder *ciphertext );