Crypt-HSM

 view release on metacpan or  search on metacpan

lib/Crypt/HSM.xs  view on Meta::CPAN

	{ STR_WITH_LEN("rsa-9796"), CKM_RSA_9796 },
	{ STR_WITH_LEN("rsa-x-509"), CKM_RSA_X_509 },
	{ STR_WITH_LEN("md2-rsa-pkcs"), CKM_MD2_RSA_PKCS },
	{ STR_WITH_LEN("md5-rsa-pkcs"), CKM_MD5_RSA_PKCS },
	{ STR_WITH_LEN("sha1-rsa-pkcs"), CKM_SHA1_RSA_PKCS },
	{ STR_WITH_LEN("ripemd128-rsa-pkcs"), CKM_RIPEMD128_RSA_PKCS },
	{ STR_WITH_LEN("ripemd160-rsa-pkcs"), CKM_RIPEMD160_RSA_PKCS },
	{ STR_WITH_LEN("rsa-pkcs-oaep"), CKM_RSA_PKCS_OAEP },
	{ STR_WITH_LEN("rsa-x9-31-key-pair-gen"), CKM_RSA_X9_31_KEY_PAIR_GEN },
	{ STR_WITH_LEN("rsa-x9-31"), CKM_RSA_X9_31 },
	{ STR_WITH_LEN("sha1-rsa-x9-31"), CKM_SHA1_RSA_X9_31 },
	{ STR_WITH_LEN("rsa-pkcs-pss"), CKM_RSA_PKCS_PSS },
	{ STR_WITH_LEN("sha1-rsa-pkcs-pss"), CKM_SHA1_RSA_PKCS_PSS },
	{ STR_WITH_LEN("dsa-key-pair-gen"), CKM_DSA_KEY_PAIR_GEN },
	{ STR_WITH_LEN("dsa"), CKM_DSA },
	{ STR_WITH_LEN("dsa-sha1"), CKM_DSA_SHA1 },
	{ STR_WITH_LEN("dsa-sha224"), CKM_DSA_SHA224 },
	{ STR_WITH_LEN("dsa-sha256"), CKM_DSA_SHA256 },
	{ STR_WITH_LEN("dsa-sha384"), CKM_DSA_SHA384 },
	{ STR_WITH_LEN("dsa-sha512"), CKM_DSA_SHA512 },
	{ STR_WITH_LEN("dsa-sha3-224"), CKM_DSA_SHA3_224 },
	{ STR_WITH_LEN("dsa-sha3-256"), CKM_DSA_SHA3_256 },
	{ STR_WITH_LEN("dsa-sha3-384"), CKM_DSA_SHA3_384 },
	{ STR_WITH_LEN("dsa-sha3-512"), CKM_DSA_SHA3_512 },
	{ STR_WITH_LEN("dh-pkcs-key-pair-gen"), CKM_DH_PKCS_KEY_PAIR_GEN },
	{ STR_WITH_LEN("dh-pkcs-derive"), CKM_DH_PKCS_DERIVE },
	{ STR_WITH_LEN("x9-42-dh-key-pair-gen"), CKM_X9_42_DH_KEY_PAIR_GEN },
	{ STR_WITH_LEN("x9-42-dh-derive"), CKM_X9_42_DH_DERIVE },
	{ STR_WITH_LEN("x9-42-dh-hybrid-derive"), CKM_X9_42_DH_HYBRID_DERIVE },
	{ STR_WITH_LEN("x9-42-mqv-derive"), CKM_X9_42_MQV_DERIVE },
	{ STR_WITH_LEN("sha256-rsa-pkcs"), CKM_SHA256_RSA_PKCS },
	{ STR_WITH_LEN("sha384-rsa-pkcs"), CKM_SHA384_RSA_PKCS },
	{ STR_WITH_LEN("sha512-rsa-pkcs"), CKM_SHA512_RSA_PKCS },
	{ STR_WITH_LEN("sha256-rsa-pkcs-pss"), CKM_SHA256_RSA_PKCS_PSS },
	{ STR_WITH_LEN("sha384-rsa-pkcs-pss"), CKM_SHA384_RSA_PKCS_PSS },
	{ STR_WITH_LEN("sha512-rsa-pkcs-pss"), CKM_SHA512_RSA_PKCS_PSS },
	{ STR_WITH_LEN("sha224-rsa-pkcs"), CKM_SHA224_RSA_PKCS },
	{ STR_WITH_LEN("sha224-rsa-pkcs-pss"), CKM_SHA224_RSA_PKCS_PSS },
	{ STR_WITH_LEN("sha512-224"), CKM_SHA512_224 },
	{ STR_WITH_LEN("sha512-224-hmac"), CKM_SHA512_224_HMAC },
	{ STR_WITH_LEN("sha512-224-hmac-general"), CKM_SHA512_224_HMAC_GENERAL },
	{ STR_WITH_LEN("sha512-224-key-derivation"), CKM_SHA512_224_KEY_DERIVATION },
	{ STR_WITH_LEN("sha512-256"), CKM_SHA512_256 },
	{ STR_WITH_LEN("sha512-256-hmac"), CKM_SHA512_256_HMAC },
	{ STR_WITH_LEN("sha512-256-hmac-general"), CKM_SHA512_256_HMAC_GENERAL },
	{ STR_WITH_LEN("sha512-256-key-derivation"), CKM_SHA512_256_KEY_DERIVATION },
	{ STR_WITH_LEN("sha512-t"), CKM_SHA512_T },
	{ STR_WITH_LEN("sha512-t-hmac"), CKM_SHA512_T_HMAC },
	{ STR_WITH_LEN("sha512-t-hmac-general"), CKM_SHA512_T_HMAC_GENERAL },
	{ STR_WITH_LEN("sha512-t-key-derivation"), CKM_SHA512_T_KEY_DERIVATION },
	{ STR_WITH_LEN("sha3-256-rsa-pkcs"), CKM_SHA3_256_RSA_PKCS },
	{ STR_WITH_LEN("sha3-384-rsa-pkcs"), CKM_SHA3_384_RSA_PKCS },
	{ STR_WITH_LEN("sha3-512-rsa-pkcs"), CKM_SHA3_512_RSA_PKCS },
	{ STR_WITH_LEN("sha3-256-rsa-pkcs-pss"), CKM_SHA3_256_RSA_PKCS_PSS },
	{ STR_WITH_LEN("sha3-384-rsa-pkcs-pss"), CKM_SHA3_384_RSA_PKCS_PSS },
	{ STR_WITH_LEN("sha3-512-rsa-pkcs-pss"), CKM_SHA3_512_RSA_PKCS_PSS },
	{ STR_WITH_LEN("sha3-224-rsa-pkcs"), CKM_SHA3_224_RSA_PKCS },
	{ STR_WITH_LEN("sha3-224-rsa-pkcs-pss"), CKM_SHA3_224_RSA_PKCS_PSS },
	{ STR_WITH_LEN("rc2-key-gen"), CKM_RC2_KEY_GEN },
	{ STR_WITH_LEN("rc2-ecb"), CKM_RC2_ECB },
	{ STR_WITH_LEN("rc2-cbc"), CKM_RC2_CBC },
	{ STR_WITH_LEN("rc2-mac"), CKM_RC2_MAC },
	{ STR_WITH_LEN("rc2-mac-general"), CKM_RC2_MAC_GENERAL },
	{ STR_WITH_LEN("rc2-cbc-pad"), CKM_RC2_CBC_PAD },
	{ STR_WITH_LEN("rc4-key-gen"), CKM_RC4_KEY_GEN },
	{ STR_WITH_LEN("rc4"), CKM_RC4 },
	{ STR_WITH_LEN("des-key-gen"), CKM_DES_KEY_GEN },
	{ STR_WITH_LEN("des-ecb"), CKM_DES_ECB },
	{ STR_WITH_LEN("des-cbc"), CKM_DES_CBC },
	{ STR_WITH_LEN("des-mac"), CKM_DES_MAC },
	{ STR_WITH_LEN("des-mac-general"), CKM_DES_MAC_GENERAL },
	{ STR_WITH_LEN("des-cbc-pad"), CKM_DES_CBC_PAD },
	{ STR_WITH_LEN("des2-key-gen"), CKM_DES2_KEY_GEN },
	{ STR_WITH_LEN("des3-key-gen"), CKM_DES3_KEY_GEN },
	{ STR_WITH_LEN("des3-ecb"), CKM_DES3_ECB },
	{ STR_WITH_LEN("des3-cbc"), CKM_DES3_CBC },
	{ STR_WITH_LEN("des3-mac"), CKM_DES3_MAC },
	{ STR_WITH_LEN("des3-mac-general"), CKM_DES3_MAC_GENERAL },
	{ STR_WITH_LEN("des3-cbc-pad"), CKM_DES3_CBC_PAD },
	{ STR_WITH_LEN("des3-cmac-general"), CKM_DES3_CMAC_GENERAL },
	{ STR_WITH_LEN("des3-cmac"), CKM_DES3_CMAC },
	{ STR_WITH_LEN("cdmf-key-gen"), CKM_CDMF_KEY_GEN },
	{ STR_WITH_LEN("cdmf-ecb"), CKM_CDMF_ECB },
	{ STR_WITH_LEN("cdmf-cbc"), CKM_CDMF_CBC },
	{ STR_WITH_LEN("cdmf-mac"), CKM_CDMF_MAC },
	{ STR_WITH_LEN("cdmf-mac-general"), CKM_CDMF_MAC_GENERAL },
	{ STR_WITH_LEN("cdmf-cbc-pad"), CKM_CDMF_CBC_PAD },
	{ STR_WITH_LEN("des-ofb64"), CKM_DES_OFB64 },
	{ STR_WITH_LEN("des-ofb8"), CKM_DES_OFB8 },
	{ STR_WITH_LEN("des-cfb64"), CKM_DES_CFB64 },
	{ STR_WITH_LEN("des-cfb8"), CKM_DES_CFB8 },
	{ STR_WITH_LEN("md2"), CKM_MD2 },
	{ STR_WITH_LEN("md2-hmac"), CKM_MD2_HMAC },
	{ STR_WITH_LEN("md2-hmac-general"), CKM_MD2_HMAC_GENERAL },
	{ STR_WITH_LEN("md5"), CKM_MD5 },
	{ STR_WITH_LEN("md5-hmac"), CKM_MD5_HMAC },
	{ STR_WITH_LEN("md5-hmac-general"), CKM_MD5_HMAC_GENERAL },
	{ STR_WITH_LEN("sha1"), CKM_SHA_1 },
	{ STR_WITH_LEN("sha1-hmac"), CKM_SHA_1_HMAC },
	{ STR_WITH_LEN("sha1-hmac-general"), CKM_SHA_1_HMAC_GENERAL },
	{ STR_WITH_LEN("ripemd128"), CKM_RIPEMD128 },
	{ STR_WITH_LEN("ripemd128-hmac"), CKM_RIPEMD128_HMAC },
	{ STR_WITH_LEN("ripemd128-hmac-general"), CKM_RIPEMD128_HMAC_GENERAL },
	{ STR_WITH_LEN("ripemd160"), CKM_RIPEMD160 },
	{ STR_WITH_LEN("ripemd160-hmac"), CKM_RIPEMD160_HMAC },
	{ STR_WITH_LEN("ripemd160-hmac-general"), CKM_RIPEMD160_HMAC_GENERAL },
	{ STR_WITH_LEN("sha256"), CKM_SHA256 },
	{ STR_WITH_LEN("sha256-hmac"), CKM_SHA256_HMAC },
	{ STR_WITH_LEN("sha256-hmac-general"), CKM_SHA256_HMAC_GENERAL },
	{ STR_WITH_LEN("sha224"), CKM_SHA224 },
	{ STR_WITH_LEN("sha224-hmac"), CKM_SHA224_HMAC },
	{ STR_WITH_LEN("sha224-hmac-general"), CKM_SHA224_HMAC_GENERAL },
	{ STR_WITH_LEN("sha384"), CKM_SHA384 },
	{ STR_WITH_LEN("sha384-hmac"), CKM_SHA384_HMAC },
	{ STR_WITH_LEN("sha384-hmac-general"), CKM_SHA384_HMAC_GENERAL },
	{ STR_WITH_LEN("sha512"), CKM_SHA512 },
	{ STR_WITH_LEN("sha512-hmac"), CKM_SHA512_HMAC },
	{ STR_WITH_LEN("sha512-hmac-general"), CKM_SHA512_HMAC_GENERAL },
	{ STR_WITH_LEN("securid-key-gen"), CKM_SECURID_KEY_GEN },
	{ STR_WITH_LEN("securid"), CKM_SECURID },
	{ STR_WITH_LEN("hotp-key-gen"), CKM_HOTP_KEY_GEN },
	{ STR_WITH_LEN("hotp"), CKM_HOTP },
	{ STR_WITH_LEN("acti"), CKM_ACTI },
	{ STR_WITH_LEN("acti-key-gen"), CKM_ACTI_KEY_GEN },
	{ STR_WITH_LEN("sha3-256"), CKM_SHA3_256 },
	{ STR_WITH_LEN("sha3-256-hmac"), CKM_SHA3_256_HMAC },
	{ STR_WITH_LEN("sha3-256-hmac-general"), CKM_SHA3_256_HMAC_GENERAL },
	{ STR_WITH_LEN("sha3-256-key-gen"), CKM_SHA3_256_KEY_GEN },
	{ STR_WITH_LEN("sha3-224"), CKM_SHA3_224 },
	{ STR_WITH_LEN("sha3-224-hmac"), CKM_SHA3_224_HMAC },
	{ STR_WITH_LEN("sha3-224-hmac-general"), CKM_SHA3_224_HMAC_GENERAL },
	{ STR_WITH_LEN("sha3-224-key-gen"), CKM_SHA3_224_KEY_GEN },
	{ STR_WITH_LEN("sha3-384"), CKM_SHA3_384 },
	{ STR_WITH_LEN("sha3-384-hmac"), CKM_SHA3_384_HMAC },
	{ STR_WITH_LEN("sha3-384-hmac-general"), CKM_SHA3_384_HMAC_GENERAL },
	{ STR_WITH_LEN("sha3-384-key-gen"), CKM_SHA3_384_KEY_GEN },
	{ STR_WITH_LEN("sha3-512"), CKM_SHA3_512 },
	{ STR_WITH_LEN("sha3-512-hmac"), CKM_SHA3_512_HMAC },
	{ STR_WITH_LEN("sha3-512-hmac-general"), CKM_SHA3_512_HMAC_GENERAL },
	{ STR_WITH_LEN("sha3-512-key-gen"), CKM_SHA3_512_KEY_GEN },
	{ STR_WITH_LEN("cast-key-gen"), CKM_CAST_KEY_GEN },
	{ STR_WITH_LEN("cast-ecb"), CKM_CAST_ECB },
	{ STR_WITH_LEN("cast-cbc"), CKM_CAST_CBC },
	{ STR_WITH_LEN("cast-mac"), CKM_CAST_MAC },
	{ STR_WITH_LEN("cast-mac-general"), CKM_CAST_MAC_GENERAL },
	{ STR_WITH_LEN("cast-cbc-pad"), CKM_CAST_CBC_PAD },
	{ STR_WITH_LEN("cast3-key-gen"), CKM_CAST3_KEY_GEN },
	{ STR_WITH_LEN("cast3-ecb"), CKM_CAST3_ECB },
	{ STR_WITH_LEN("cast3-cbc"), CKM_CAST3_CBC },
	{ STR_WITH_LEN("cast3-mac"), CKM_CAST3_MAC },
	{ STR_WITH_LEN("cast3-mac-general"), CKM_CAST3_MAC_GENERAL },
	{ STR_WITH_LEN("cast3-cbc-pad"), CKM_CAST3_CBC_PAD },
	{ STR_WITH_LEN("cast128-key-gen"), CKM_CAST128_KEY_GEN },
	{ STR_WITH_LEN("cast5-key-gen"), CKM_CAST5_KEY_GEN },
	{ STR_WITH_LEN("cast128-ecb"), CKM_CAST128_ECB },
	{ STR_WITH_LEN("cast5-ecb"), CKM_CAST5_ECB },
	{ STR_WITH_LEN("cast128-cbc"), CKM_CAST128_CBC },
	{ STR_WITH_LEN("cast5-cbc"), CKM_CAST5_CBC },
	{ STR_WITH_LEN("cast128-mac"), CKM_CAST128_MAC },
	{ STR_WITH_LEN("cast5-mac"), CKM_CAST5_MAC },
	{ STR_WITH_LEN("cast128-mac-general"), CKM_CAST128_MAC_GENERAL },
	{ STR_WITH_LEN("cast5-mac-general"), CKM_CAST5_MAC_GENERAL },
	{ STR_WITH_LEN("cast128-cbc-pad"), CKM_CAST128_CBC_PAD },
	{ STR_WITH_LEN("cast5-cbc-pad"), CKM_CAST5_CBC_PAD },
	{ STR_WITH_LEN("rc5-key-gen"), CKM_RC5_KEY_GEN },
	{ STR_WITH_LEN("rc5-ecb"), CKM_RC5_ECB },
	{ STR_WITH_LEN("rc5-cbc"), CKM_RC5_CBC },
	{ STR_WITH_LEN("rc5-mac"), CKM_RC5_MAC },
	{ STR_WITH_LEN("rc5-mac-general"), CKM_RC5_MAC_GENERAL },
	{ STR_WITH_LEN("rc5-cbc-pad"), CKM_RC5_CBC_PAD },
	{ STR_WITH_LEN("idea-key-gen"), CKM_IDEA_KEY_GEN },
	{ STR_WITH_LEN("idea-ecb"), CKM_IDEA_ECB },
	{ STR_WITH_LEN("idea-cbc"), CKM_IDEA_CBC },
	{ STR_WITH_LEN("idea-mac"), CKM_IDEA_MAC },
	{ STR_WITH_LEN("idea-mac-general"), CKM_IDEA_MAC_GENERAL },
	{ STR_WITH_LEN("idea-cbc-pad"), CKM_IDEA_CBC_PAD },
	{ STR_WITH_LEN("generic-secret-key-gen"), CKM_GENERIC_SECRET_KEY_GEN },
	{ STR_WITH_LEN("concatenate-base-and-key"), CKM_CONCATENATE_BASE_AND_KEY },
	{ STR_WITH_LEN("concatenate-base-and-data"), CKM_CONCATENATE_BASE_AND_DATA },
	{ STR_WITH_LEN("concatenate-data-and-base"), CKM_CONCATENATE_DATA_AND_BASE },
	{ STR_WITH_LEN("xor-base-and-data"), CKM_XOR_BASE_AND_DATA },
	{ STR_WITH_LEN("extract-key-from-key"), CKM_EXTRACT_KEY_FROM_KEY },
	{ STR_WITH_LEN("ssl3-pre-master-key-gen"), CKM_SSL3_PRE_MASTER_KEY_GEN },
	{ STR_WITH_LEN("ssl3-master-key-derive"), CKM_SSL3_MASTER_KEY_DERIVE },
	{ STR_WITH_LEN("ssl3-key-and-mac-derive"), CKM_SSL3_KEY_AND_MAC_DERIVE },
	{ STR_WITH_LEN("ssl3-master-key-derive-dh"), CKM_SSL3_MASTER_KEY_DERIVE_DH },
	{ STR_WITH_LEN("tls-pre-master-key-gen"), CKM_TLS_PRE_MASTER_KEY_GEN },
	{ STR_WITH_LEN("tls-master-key-derive"), CKM_TLS_MASTER_KEY_DERIVE },
	{ STR_WITH_LEN("tls-key-and-mac-derive"), CKM_TLS_KEY_AND_MAC_DERIVE },
	{ STR_WITH_LEN("tls-master-key-derive-dh"), CKM_TLS_MASTER_KEY_DERIVE_DH },
	{ STR_WITH_LEN("tls-prf"), CKM_TLS_PRF },
	{ STR_WITH_LEN("ssl3-md5-mac"), CKM_SSL3_MD5_MAC },
	{ STR_WITH_LEN("ssl3-sha1-mac"), CKM_SSL3_SHA1_MAC },
	{ STR_WITH_LEN("md5-key-derivation"), CKM_MD5_KEY_DERIVATION },
	{ STR_WITH_LEN("md2-key-derivation"), CKM_MD2_KEY_DERIVATION },
	{ STR_WITH_LEN("sha1-key-derivation"), CKM_SHA1_KEY_DERIVATION },
	{ STR_WITH_LEN("sha256-key-derivation"), CKM_SHA256_KEY_DERIVATION },
	{ STR_WITH_LEN("sha384-key-derivation"), CKM_SHA384_KEY_DERIVATION },
	{ STR_WITH_LEN("sha512-key-derivation"), CKM_SHA512_KEY_DERIVATION },
	{ STR_WITH_LEN("sha224-key-derivation"), CKM_SHA224_KEY_DERIVATION },
	{ STR_WITH_LEN("sha3-256-key-derivation"), CKM_SHA3_256_KEY_DERIVATION },
	{ STR_WITH_LEN("sha3-224-key-derivation"), CKM_SHA3_224_KEY_DERIVATION },
	{ STR_WITH_LEN("sha3-384-key-derivation"), CKM_SHA3_384_KEY_DERIVATION },
	{ STR_WITH_LEN("sha3-512-key-derivation"), CKM_SHA3_512_KEY_DERIVATION },
	{ STR_WITH_LEN("shake-128-key-derivation"), CKM_SHAKE_128_KEY_DERIVATION },
	{ STR_WITH_LEN("shake-256-key-derivation"), CKM_SHAKE_256_KEY_DERIVATION },
	{ STR_WITH_LEN("sha3-256-key-derive"), CKM_SHA3_256_KEY_DERIVE },
	{ STR_WITH_LEN("sha3-224-key-derive"), CKM_SHA3_224_KEY_DERIVE },
	{ STR_WITH_LEN("sha3-384-key-derive"), CKM_SHA3_384_KEY_DERIVE },
	{ STR_WITH_LEN("sha3-512-key-derive"), CKM_SHA3_512_KEY_DERIVE },
	{ STR_WITH_LEN("shake-128-key-derive"), CKM_SHAKE_128_KEY_DERIVE },
	{ STR_WITH_LEN("shake-256-key-derive"), CKM_SHAKE_256_KEY_DERIVE },
	{ STR_WITH_LEN("pbe-md2-des-cbc"), CKM_PBE_MD2_DES_CBC },
	{ STR_WITH_LEN("pbe-md5-des-cbc"), CKM_PBE_MD5_DES_CBC },
	{ STR_WITH_LEN("pbe-md5-cast-cbc"), CKM_PBE_MD5_CAST_CBC },
	{ STR_WITH_LEN("pbe-md5-cast3-cbc"), CKM_PBE_MD5_CAST3_CBC },
	{ STR_WITH_LEN("pbe-md5-cast128-cbc"), CKM_PBE_MD5_CAST128_CBC },
	{ STR_WITH_LEN("pbe-md5-cast5-cbc"), CKM_PBE_MD5_CAST5_CBC },
	{ STR_WITH_LEN("pbe-sha1-cast128-cbc"), CKM_PBE_SHA1_CAST128_CBC },
	{ STR_WITH_LEN("pbe-sha1-cast5-cbc"), CKM_PBE_SHA1_CAST5_CBC },
	{ STR_WITH_LEN("pbe-sha1-rc4-128"), CKM_PBE_SHA1_RC4_128 },
	{ STR_WITH_LEN("pbe-sha1-rc4-40"), CKM_PBE_SHA1_RC4_40 },
	{ STR_WITH_LEN("pbe-sha1-des3-ede-cbc"), CKM_PBE_SHA1_DES3_EDE_CBC },
	{ STR_WITH_LEN("pbe-sha1-des2-ede-cbc"), CKM_PBE_SHA1_DES2_EDE_CBC },
	{ STR_WITH_LEN("pbe-sha1-rc2-128-cbc"), CKM_PBE_SHA1_RC2_128_CBC },
	{ STR_WITH_LEN("pbe-sha1-rc2-40-cbc"), CKM_PBE_SHA1_RC2_40_CBC },
	{ STR_WITH_LEN("pkcs5-pbkd2"), CKM_PKCS5_PBKD2 },
	{ STR_WITH_LEN("pba-sha1-with-sha1-hmac"), CKM_PBA_SHA1_WITH_SHA1_HMAC },
	{ STR_WITH_LEN("wtls-pre-master-key-gen"), CKM_WTLS_PRE_MASTER_KEY_GEN },
	{ STR_WITH_LEN("wtls-master-key-derive"), CKM_WTLS_MASTER_KEY_DERIVE },
	{ STR_WITH_LEN("wtls-master-key-derive-dh-ecc"), CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC },
	{ STR_WITH_LEN("wtls-prf"), CKM_WTLS_PRF },
	{ STR_WITH_LEN("wtls-server-key-and-mac-derive"), CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE },
	{ STR_WITH_LEN("wtls-client-key-and-mac-derive"), CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE },
	{ STR_WITH_LEN("tls10-mac-server"), CKM_TLS10_MAC_SERVER },
	{ STR_WITH_LEN("tls10-mac-client"), CKM_TLS10_MAC_CLIENT },
	{ STR_WITH_LEN("tls12-mac"), CKM_TLS12_MAC },
	{ STR_WITH_LEN("tls12-kdf"), CKM_TLS12_KDF },
	{ STR_WITH_LEN("tls12-master-key-derive"), CKM_TLS12_MASTER_KEY_DERIVE },
	{ STR_WITH_LEN("tls12-key-and-mac-derive"), CKM_TLS12_KEY_AND_MAC_DERIVE },
	{ STR_WITH_LEN("tls12-master-key-derive-dh"), CKM_TLS12_MASTER_KEY_DERIVE_DH },
	{ STR_WITH_LEN("tls12-key-safe-derive"), CKM_TLS12_KEY_SAFE_DERIVE },
	{ STR_WITH_LEN("tls-mac"), CKM_TLS_MAC },
	{ STR_WITH_LEN("tls-kdf"), CKM_TLS_KDF },
	{ STR_WITH_LEN("key-wrap-lynks"), CKM_KEY_WRAP_LYNKS },
	{ STR_WITH_LEN("key-wrap-set-oaep"), CKM_KEY_WRAP_SET_OAEP },
	{ STR_WITH_LEN("cms-sig"), CKM_CMS_SIG },
	{ STR_WITH_LEN("kip-derive"), CKM_KIP_DERIVE },
	{ STR_WITH_LEN("kip-wrap"), CKM_KIP_WRAP },
	{ STR_WITH_LEN("kip-mac"), CKM_KIP_MAC },
	{ STR_WITH_LEN("camellia-key-gen"), CKM_CAMELLIA_KEY_GEN },
	{ STR_WITH_LEN("camellia-ecb"), CKM_CAMELLIA_ECB },
	{ STR_WITH_LEN("camellia-cbc"), CKM_CAMELLIA_CBC },
	{ STR_WITH_LEN("camellia-mac"), CKM_CAMELLIA_MAC },
	{ STR_WITH_LEN("camellia-mac-general"), CKM_CAMELLIA_MAC_GENERAL },
	{ STR_WITH_LEN("camellia-cbc-pad"), CKM_CAMELLIA_CBC_PAD },
	{ STR_WITH_LEN("camellia-ecb-encrypt-data"), CKM_CAMELLIA_ECB_ENCRYPT_DATA },
	{ STR_WITH_LEN("camellia-cbc-encrypt-data"), CKM_CAMELLIA_CBC_ENCRYPT_DATA },
	{ STR_WITH_LEN("camellia-ctr"), CKM_CAMELLIA_CTR },
	{ STR_WITH_LEN("aria-key-gen"), CKM_ARIA_KEY_GEN },
	{ STR_WITH_LEN("aria-ecb"), CKM_ARIA_ECB },
	{ STR_WITH_LEN("aria-cbc"), CKM_ARIA_CBC },
	{ STR_WITH_LEN("aria-mac"), CKM_ARIA_MAC },
	{ STR_WITH_LEN("aria-mac-general"), CKM_ARIA_MAC_GENERAL },
	{ STR_WITH_LEN("aria-cbc-pad"), CKM_ARIA_CBC_PAD },
	{ STR_WITH_LEN("aria-ecb-encrypt-data"), CKM_ARIA_ECB_ENCRYPT_DATA },
	{ STR_WITH_LEN("aria-cbc-encrypt-data"), CKM_ARIA_CBC_ENCRYPT_DATA },
	{ STR_WITH_LEN("seed-key-gen"), CKM_SEED_KEY_GEN },
	{ STR_WITH_LEN("seed-ecb"), CKM_SEED_ECB },
	{ STR_WITH_LEN("seed-cbc"), CKM_SEED_CBC },
	{ STR_WITH_LEN("seed-mac"), CKM_SEED_MAC },
	{ STR_WITH_LEN("seed-mac-general"), CKM_SEED_MAC_GENERAL },
	{ STR_WITH_LEN("seed-cbc-pad"), CKM_SEED_CBC_PAD },
	{ STR_WITH_LEN("seed-ecb-encrypt-data"), CKM_SEED_ECB_ENCRYPT_DATA },
	{ STR_WITH_LEN("seed-cbc-encrypt-data"), CKM_SEED_CBC_ENCRYPT_DATA },
	{ STR_WITH_LEN("skipjack-key-gen"), CKM_SKIPJACK_KEY_GEN },
	{ STR_WITH_LEN("skipjack-ecb64"), CKM_SKIPJACK_ECB64 },
	{ STR_WITH_LEN("skipjack-cbc64"), CKM_SKIPJACK_CBC64 },
	{ STR_WITH_LEN("skipjack-ofb64"), CKM_SKIPJACK_OFB64 },
	{ STR_WITH_LEN("skipjack-cfb64"), CKM_SKIPJACK_CFB64 },
	{ STR_WITH_LEN("skipjack-cfb32"), CKM_SKIPJACK_CFB32 },
	{ STR_WITH_LEN("skipjack-cfb16"), CKM_SKIPJACK_CFB16 },
	{ STR_WITH_LEN("skipjack-cfb8"), CKM_SKIPJACK_CFB8 },
	{ STR_WITH_LEN("skipjack-wrap"), CKM_SKIPJACK_WRAP },
	{ STR_WITH_LEN("skipjack-private-wrap"), CKM_SKIPJACK_PRIVATE_WRAP },
	{ STR_WITH_LEN("skipjack-relayx"), CKM_SKIPJACK_RELAYX },
	{ STR_WITH_LEN("kea-key-pair-gen"), CKM_KEA_KEY_PAIR_GEN },
	{ STR_WITH_LEN("kea-key-derive"), CKM_KEA_KEY_DERIVE },
	{ STR_WITH_LEN("kea-derive"), CKM_KEA_DERIVE },
	{ STR_WITH_LEN("fortezza-timestamp"), CKM_FORTEZZA_TIMESTAMP },
	{ STR_WITH_LEN("baton-key-gen"), CKM_BATON_KEY_GEN },
	{ STR_WITH_LEN("baton-ecb128"), CKM_BATON_ECB128 },
	{ STR_WITH_LEN("baton-ecb96"), CKM_BATON_ECB96 },
	{ STR_WITH_LEN("baton-cbc128"), CKM_BATON_CBC128 },
	{ STR_WITH_LEN("baton-counter"), CKM_BATON_COUNTER },
	{ STR_WITH_LEN("baton-shuffle"), CKM_BATON_SHUFFLE },
	{ STR_WITH_LEN("baton-wrap"), CKM_BATON_WRAP },
	{ STR_WITH_LEN("ec-key-pair-gen"), CKM_EC_KEY_PAIR_GEN },
	{ STR_WITH_LEN("ecdsa-key-pair-gen"), CKM_ECDSA_KEY_PAIR_GEN },
	{ STR_WITH_LEN("ecdsa"), CKM_ECDSA },
	{ STR_WITH_LEN("ecdsa-sha1"), CKM_ECDSA_SHA1 },
	{ STR_WITH_LEN("ecdsa-sha224"), CKM_ECDSA_SHA224 },
	{ STR_WITH_LEN("ecdsa-sha256"), CKM_ECDSA_SHA256 },
	{ STR_WITH_LEN("ecdsa-sha384"), CKM_ECDSA_SHA384 },
	{ STR_WITH_LEN("ecdsa-sha512"), CKM_ECDSA_SHA512 },
	{ STR_WITH_LEN("ec-key-pair-gen-w-extra-bits"), CKM_EC_KEY_PAIR_GEN_W_EXTRA_BITS },
	{ STR_WITH_LEN("ecdh1-derive"), CKM_ECDH1_DERIVE },
	{ STR_WITH_LEN("ecdh1-cofactor-derive"), CKM_ECDH1_COFACTOR_DERIVE },
	{ STR_WITH_LEN("ecmqv-derive"), CKM_ECMQV_DERIVE },
	{ STR_WITH_LEN("ecdh-aes-key-wrap"), CKM_ECDH_AES_KEY_WRAP },
	{ STR_WITH_LEN("rsa-aes-key-wrap"), CKM_RSA_AES_KEY_WRAP },
	{ STR_WITH_LEN("juniper-key-gen"), CKM_JUNIPER_KEY_GEN },
	{ STR_WITH_LEN("juniper-ecb128"), CKM_JUNIPER_ECB128 },
	{ STR_WITH_LEN("juniper-cbc128"), CKM_JUNIPER_CBC128 },
	{ STR_WITH_LEN("juniper-counter"), CKM_JUNIPER_COUNTER },
	{ STR_WITH_LEN("juniper-shuffle"), CKM_JUNIPER_SHUFFLE },
	{ STR_WITH_LEN("juniper-wrap"), CKM_JUNIPER_WRAP },
	{ STR_WITH_LEN("fasthash"), CKM_FASTHASH },
	{ STR_WITH_LEN("aes-xts"), CKM_AES_XTS },
	{ STR_WITH_LEN("aes-xts-key-gen"), CKM_AES_XTS_KEY_GEN },
	{ STR_WITH_LEN("aes-key-gen"), CKM_AES_KEY_GEN },
	{ STR_WITH_LEN("aes-ecb"), CKM_AES_ECB },
	{ STR_WITH_LEN("aes-cbc"), CKM_AES_CBC },
	{ STR_WITH_LEN("aes-mac"), CKM_AES_MAC },
	{ STR_WITH_LEN("aes-mac-general"), CKM_AES_MAC_GENERAL },
	{ STR_WITH_LEN("aes-cbc-pad"), CKM_AES_CBC_PAD },
	{ STR_WITH_LEN("aes-ctr"), CKM_AES_CTR },
	{ STR_WITH_LEN("aes-gcm"), CKM_AES_GCM },
	{ STR_WITH_LEN("aes-ccm"), CKM_AES_CCM },
	{ STR_WITH_LEN("aes-cts"), CKM_AES_CTS },
	{ STR_WITH_LEN("aes-cmac"), CKM_AES_CMAC },
	{ STR_WITH_LEN("aes-cmac-general"), CKM_AES_CMAC_GENERAL },
	{ STR_WITH_LEN("aes-xcbc-mac"), CKM_AES_XCBC_MAC },
	{ STR_WITH_LEN("aes-xcbc-mac-96"), CKM_AES_XCBC_MAC_96 },
	{ STR_WITH_LEN("aes-gmac"), CKM_AES_GMAC },
	{ STR_WITH_LEN("blowfish-key-gen"), CKM_BLOWFISH_KEY_GEN },
	{ STR_WITH_LEN("blowfish-cbc"), CKM_BLOWFISH_CBC },
	{ STR_WITH_LEN("twofish-key-gen"), CKM_TWOFISH_KEY_GEN },
	{ STR_WITH_LEN("twofish-cbc"), CKM_TWOFISH_CBC },
	{ STR_WITH_LEN("blowfish-cbc-pad"), CKM_BLOWFISH_CBC_PAD },
	{ STR_WITH_LEN("twofish-cbc-pad"), CKM_TWOFISH_CBC_PAD },
	{ STR_WITH_LEN("des-ecb-encrypt-data"), CKM_DES_ECB_ENCRYPT_DATA },
	{ STR_WITH_LEN("des-cbc-encrypt-data"), CKM_DES_CBC_ENCRYPT_DATA },
	{ STR_WITH_LEN("des3-ecb-encrypt-data"), CKM_DES3_ECB_ENCRYPT_DATA },
	{ STR_WITH_LEN("des3-cbc-encrypt-data"), CKM_DES3_CBC_ENCRYPT_DATA },
	{ STR_WITH_LEN("aes-ecb-encrypt-data"), CKM_AES_ECB_ENCRYPT_DATA },
	{ STR_WITH_LEN("aes-cbc-encrypt-data"), CKM_AES_CBC_ENCRYPT_DATA },
	{ STR_WITH_LEN("gostr3410-key-pair-gen"), CKM_GOSTR3410_KEY_PAIR_GEN },
	{ STR_WITH_LEN("gostr3410"), CKM_GOSTR3410 },
	{ STR_WITH_LEN("gostr3410-with-gostr3411"), CKM_GOSTR3410_WITH_GOSTR3411 },
	{ STR_WITH_LEN("gostr3410-key-wrap"), CKM_GOSTR3410_KEY_WRAP },
	{ STR_WITH_LEN("gostr3410-derive"), CKM_GOSTR3410_DERIVE },
	{ STR_WITH_LEN("gostr3411"), CKM_GOSTR3411 },
	{ STR_WITH_LEN("gostr3411-hmac"), CKM_GOSTR3411_HMAC },
	{ STR_WITH_LEN("gost28147-key-gen"), CKM_GOST28147_KEY_GEN },
	{ STR_WITH_LEN("gost28147-ecb"), CKM_GOST28147_ECB },
	{ STR_WITH_LEN("gost28147"), CKM_GOST28147 },
	{ STR_WITH_LEN("gost28147-mac"), CKM_GOST28147_MAC },
	{ STR_WITH_LEN("gost28147-key-wrap"), CKM_GOST28147_KEY_WRAP },
	{ STR_WITH_LEN("chacha20-key-gen"), CKM_CHACHA20_KEY_GEN },
	{ STR_WITH_LEN("chacha20"), CKM_CHACHA20 },
	{ STR_WITH_LEN("poly1305-key-gen"), CKM_POLY1305_KEY_GEN },
	{ STR_WITH_LEN("poly1305"), CKM_POLY1305 },
	{ STR_WITH_LEN("dsa-parameter-gen"), CKM_DSA_PARAMETER_GEN },
	{ STR_WITH_LEN("dh-pkcs-parameter-gen"), CKM_DH_PKCS_PARAMETER_GEN },
	{ STR_WITH_LEN("x9-42-dh-parameter-gen"), CKM_X9_42_DH_PARAMETER_GEN },
	{ STR_WITH_LEN("dsa-probabilistic-parameter-gen"), CKM_DSA_PROBABILISTIC_PARAMETER_GEN },
	{ STR_WITH_LEN("dsa-probablistic-parameter-gen"), CKM_DSA_PROBABLISTIC_PARAMETER_GEN },
	{ STR_WITH_LEN("dsa-shawe-taylor-parameter-gen"), CKM_DSA_SHAWE_TAYLOR_PARAMETER_GEN },
	{ STR_WITH_LEN("dsa-fips-g-gen"), CKM_DSA_FIPS_G_GEN },
	{ STR_WITH_LEN("aes-ofb"), CKM_AES_OFB },
	{ STR_WITH_LEN("aes-cfb64"), CKM_AES_CFB64 },
	{ STR_WITH_LEN("aes-cfb8"), CKM_AES_CFB8 },
	{ STR_WITH_LEN("aes-cfb128"), CKM_AES_CFB128 },
	{ STR_WITH_LEN("aes-cfb1"), CKM_AES_CFB1 },
	{ STR_WITH_LEN("aes-key-wrap"), CKM_AES_KEY_WRAP },
	{ STR_WITH_LEN("aes-key-wrap-pad"), CKM_AES_KEY_WRAP_PAD },
	{ STR_WITH_LEN("aes-key-wrap-kwp"), CKM_AES_KEY_WRAP_KWP },
	{ STR_WITH_LEN("aes-key-wrap-pkcs7"), CKM_AES_KEY_WRAP_PKCS7 },
	{ STR_WITH_LEN("rsa-pkcs-tpm-1-1"), CKM_RSA_PKCS_TPM_1_1 },
	{ STR_WITH_LEN("rsa-pkcs-oaep-tpm-1-1"), CKM_RSA_PKCS_OAEP_TPM_1_1 },
	{ STR_WITH_LEN("sha1-key-gen"), CKM_SHA_1_KEY_GEN },
	{ STR_WITH_LEN("sha224-key-gen"), CKM_SHA224_KEY_GEN },
	{ STR_WITH_LEN("sha256-key-gen"), CKM_SHA256_KEY_GEN },
	{ STR_WITH_LEN("sha384-key-gen"), CKM_SHA384_KEY_GEN },
	{ STR_WITH_LEN("sha512-key-gen"), CKM_SHA512_KEY_GEN },
	{ STR_WITH_LEN("sha512-224-key-gen"), CKM_SHA512_224_KEY_GEN },
	{ STR_WITH_LEN("sha512-256-key-gen"), CKM_SHA512_256_KEY_GEN },
	{ STR_WITH_LEN("sha512-t-key-gen"), CKM_SHA512_T_KEY_GEN },
	{ STR_WITH_LEN("null"), CKM_NULL },
	{ STR_WITH_LEN("blake2b-160"), CKM_BLAKE2B_160 },
	{ STR_WITH_LEN("blake2b-160-hmac"), CKM_BLAKE2B_160_HMAC },
	{ STR_WITH_LEN("blake2b-160-hmac-general"), CKM_BLAKE2B_160_HMAC_GENERAL },
	{ STR_WITH_LEN("blake2b-160-key-derive"), CKM_BLAKE2B_160_KEY_DERIVE },
	{ STR_WITH_LEN("blake2b-160-key-gen"), CKM_BLAKE2B_160_KEY_GEN },
	{ STR_WITH_LEN("blake2b-256"), CKM_BLAKE2B_256 },
	{ STR_WITH_LEN("blake2b-256-hmac"), CKM_BLAKE2B_256_HMAC },
	{ STR_WITH_LEN("blake2b-256-hmac-general"), CKM_BLAKE2B_256_HMAC_GENERAL },
	{ STR_WITH_LEN("blake2b-256-key-derive"), CKM_BLAKE2B_256_KEY_DERIVE },
	{ STR_WITH_LEN("blake2b-256-key-gen"), CKM_BLAKE2B_256_KEY_GEN },
	{ STR_WITH_LEN("blake2b-384"), CKM_BLAKE2B_384 },
	{ STR_WITH_LEN("blake2b-384-hmac"), CKM_BLAKE2B_384_HMAC },
	{ STR_WITH_LEN("blake2b-384-hmac-general"), CKM_BLAKE2B_384_HMAC_GENERAL },
	{ STR_WITH_LEN("blake2b-384-key-derive"), CKM_BLAKE2B_384_KEY_DERIVE },
	{ STR_WITH_LEN("blake2b-384-key-gen"), CKM_BLAKE2B_384_KEY_GEN },
	{ STR_WITH_LEN("blake2b-512"), CKM_BLAKE2B_512 },
	{ STR_WITH_LEN("blake2b-512-hmac"), CKM_BLAKE2B_512_HMAC },

lib/Crypt/HSM.xs  view on Meta::CPAN

	{ STR_WITH_LEN("hash-ml-dsa-sha3_256"), CKM_HASH_ML_DSA_SHA3_256 },
	{ STR_WITH_LEN("hash-ml-dsa-sha3_384"), CKM_HASH_ML_DSA_SHA3_384 },
	{ STR_WITH_LEN("hash-ml-dsa-sha3_512"), CKM_HASH_ML_DSA_SHA3_512 },
	{ STR_WITH_LEN("hash-ml-dsa-shake128"), CKM_HASH_ML_DSA_SHAKE128 },
	{ STR_WITH_LEN("hash-ml-dsa-shake256"), CKM_HASH_ML_DSA_SHAKE256 },
	{ STR_WITH_LEN("slh-dsa-key-pair-gen"), CKM_SLH_DSA_KEY_PAIR_GEN },
	{ STR_WITH_LEN("slh-dsa"), CKM_SLH_DSA },
	{ STR_WITH_LEN("hash-slh-dsa"), CKM_HASH_SLH_DSA },
	{ STR_WITH_LEN("hash-slh-dsa-sha224"), CKM_HASH_SLH_DSA_SHA224 },
	{ STR_WITH_LEN("hash-slh-dsa-sha256"), CKM_HASH_SLH_DSA_SHA256 },
	{ STR_WITH_LEN("hash-slh-dsa-sha384"), CKM_HASH_SLH_DSA_SHA384 },
	{ STR_WITH_LEN("hash-slh-dsa-sha512"), CKM_HASH_SLH_DSA_SHA512 },
	{ STR_WITH_LEN("hash-slh-dsa-sha3_224"), CKM_HASH_SLH_DSA_SHA3_224 },
	{ STR_WITH_LEN("hash-slh-dsa-sha3_256"), CKM_HASH_SLH_DSA_SHA3_256 },
	{ STR_WITH_LEN("hash-slh-dsa-sha3_384"), CKM_HASH_SLH_DSA_SHA3_384 },
	{ STR_WITH_LEN("hash-slh-dsa-sha3_512"), CKM_HASH_SLH_DSA_SHA3_512 },
	{ STR_WITH_LEN("hash-slh-dsa-shake128"), CKM_HASH_SLH_DSA_SHAKE128 },
	{ STR_WITH_LEN("hash-slh-dsa-shake256"), CKM_HASH_SLH_DSA_SHAKE256 },
	{ STR_WITH_LEN("tls12_extended-master-key-derive"), CKM_TLS12_EXTENDED_MASTER_KEY_DERIVE },
	{ STR_WITH_LEN("tls12_extended-master-key-derive-dh"), CKM_TLS12_EXTENDED_MASTER_KEY_DERIVE_DH },
	{ STR_WITH_LEN("vendor-defined"), CKM_VENDOR_DEFINED },
};

#define INIT_PARAMS(TYPE) \
	TYPE* params = safecalloc(1, sizeof(TYPE));\
	SAVEFREEPV(params);\
	result.pParameter = params;\
	result.ulParameterLen = sizeof *params;

#define specialize_pss(result, hash, generator, array, array_length) {\
	INIT_PARAMS(CK_RSA_PKCS_PSS_PARAMS);\
	params->hashAlg = hash;\
	params->mgf = generator;\
	if (array_len >= 1)\
		params->sLen = (CK_ULONG)SvUV((array)[0]);\
}

static CK_MECHANISM_TYPE S_get_mechanism_type(pTHX_ SV* input) {
	if (SvROK(input)) {
		MAGIC* magic = mg_findext(SvRV(input), PERL_MAGIC_ext, &Crypt__HSM__Mechanism_magic);
		if (!magic)
			croak("No magic found on Crypt::HSM::Mechanism object");
		struct Mechanism* mech = (struct Mechanism*) magic->mg_ptr;
		return mech->mechanism;
	} else {
		return map_get(mechanisms, input, "mechanism");
	}
}
#define get_mechanism_type(input) S_get_mechanism_type(aTHX_ input)
#define XS_unpack_CK_MECHANISM_TYPE get_mechanism_type

static CK_MECHANISM S_specialize_mechanism(pTHX_ CK_MECHANISM_TYPE type, SV** array, ssize_t array_len) {
	CK_MECHANISM result = { type, NULL, 0 };

	switch (type) {
		case CKM_DES_ECB:
		case CKM_DES3_ECB:
		case CKM_AES_ECB:
			break;

		case CKM_DES_CBC:
		case CKM_DES_CBC_PAD:
		case CKM_DES3_CBC:
		case CKM_DES3_CBC_PAD:
		case CKM_AES_CBC:
		case CKM_AES_CBC_PAD:

		case CKM_DES_CFB8:
		case CKM_DES_CFB64:
		case CKM_DES_OFB8:
		case CKM_DES_OFB64:
		case CKM_AES_CFB8:
		case CKM_AES_CFB128:
		case CKM_AES_OFB:
			if (array_len < 1)
				croak("No IV given for cipher needing it");
			result.pParameter = get_buffer(array[0], &result.ulParameterLen);
			break;

		case CKM_AES_CTR: {
			if (array_len < 1)
				croak("No IV given for AES CTR");

			INIT_PARAMS(CK_AES_CTR_PARAMS);

			STRLEN len;
			const char* cb = SvPVbyte(array[0], len);
			memcpy(params->cb, cb, MIN(len, 16));

			params->ulCounterBits = array_len >= 2 ? (CK_ULONG)SvUV(array[1]) : 128;

			break;
		}

		case CKM_AES_GCM: {
			if (array_len < 1)
				croak("No IV given for AES-GCM");

			INIT_PARAMS(CK_GCM_PARAMS);

			SV_CHECK_THINKFIRST(array[0]);
			params->pIv = get_buffer(array[0], &params->ulIvLen);
			params->ulIvBits = 8 * params->ulIvLen;

			if (array_len >= 2 && SvOK(array[1]))
				params->pAAD = get_buffer(array[1], &params->ulAADLen);

			params->ulTagBits = array_len >= 3 ? (CK_ULONG)SvUV(array[2]) : 128;

			break;
		}

		case CKM_CHACHA20_POLY1305:
		case CKM_SALSA20_POLY1305: {
			if (array_len < 1)
				croak("No nonce given for chacha20/salsa20");

			INIT_PARAMS(CK_SALSA20_CHACHA20_POLY1305_PARAMS);

			params->pNonce = get_buffer(array[0], &params->ulNonceLen);

			if (array_len >= 2 && SvOK(array[1]))
				params->pAAD = get_buffer(array[1], &params->ulAADLen);

			break;
		}

lib/Crypt/HSM.xs  view on Meta::CPAN

			break;
		case CKM_SHA384_RSA_PKCS_PSS:
			specialize_pss(&result, CKM_SHA384, CKG_MGF1_SHA384, array, array_len);
			break;
		case CKM_SHA512_RSA_PKCS_PSS:
			specialize_pss(&result, CKM_SHA512, CKG_MGF1_SHA512, array, array_len);
			break;

		case CKM_ECDH1_DERIVE:
		case CKM_ECDH1_COFACTOR_DERIVE: {
			if (array_len < 1)
				croak("No public key given for ECDH derivation");

			INIT_PARAMS(CK_ECDH1_DERIVE_PARAMS);

			params->pPublicData = get_buffer(array[0], &params->ulPublicDataLen);

			params->kdf = array_len > 1 ? map_get(kdfs, array[1], "kdf") : CKD_NULL;

			if (array_len > 2 && SvOK(array[2]))
				params->pSharedData = get_buffer(array[2], &params->ulSharedDataLen);

			break;
		}

		case CKM_DH_PKCS_DERIVE: {
			if (array_len < 1)
				croak("Insufficient parameters for derivation");

			result.pParameter = get_buffer(array[0], &result.ulParameterLen);

			break;
		}

		case CKM_DES_ECB_ENCRYPT_DATA:
		case CKM_DES3_ECB_ENCRYPT_DATA:
		case CKM_CONCATENATE_DATA_AND_BASE:
		case CKM_CONCATENATE_BASE_AND_DATA:
		case CKM_AES_ECB_ENCRYPT_DATA: {
			if (array_len < 1)
				croak("Insufficient parameters for derivation");

			INIT_PARAMS(CK_KEY_DERIVATION_STRING_DATA);

			params->pData = get_buffer(array[0], &params->ulLen);

			break;
		}

		case CKM_CONCATENATE_BASE_AND_KEY: {
			if (array_len < 1)
				croak("Insufficient parameters for derivation");

			INIT_PARAMS(CK_OBJECT_HANDLE);

			*params = (CK_ULONG)SvUV(array[0]);

			break;
		}

		case CKM_DES_CBC_ENCRYPT_DATA:
		case CKM_DES3_CBC_ENCRYPT_DATA: {
			if (array_len < 2)
				croak("Insufficient parameters for derivation");

			INIT_PARAMS(CK_DES_CBC_ENCRYPT_DATA_PARAMS);

			params->pData = get_buffer(array[0], &params->length);
			STRLEN length;
			const char* iv = SvPVbyte(array[1], length);
			memcpy(params->iv, iv, MIN(sizeof params->iv, length));

			break;
		}

		case CKM_AES_CBC_ENCRYPT_DATA: {
			if (array_len < 2)
				croak("Insufficient parameters for derivation");

			INIT_PARAMS(CK_AES_CBC_ENCRYPT_DATA_PARAMS);

			params->pData = get_buffer(array[0], &params->length);
			STRLEN length;
			const char* iv = SvPVbyte(array[1], length);
			memcpy(params->iv, iv, MIN(sizeof params->iv, length));

			break;
		}

		case CKM_AES_KEY_WRAP:
		case CKM_AES_KEY_WRAP_PAD:
		case CKM_AES_KEY_WRAP_PKCS7:
		case CKM_AES_KEY_WRAP_KWP:
			if (array_len > 0)
				result.pParameter = get_buffer(array[0], &result.ulParameterLen);
			break;

		case CKM_RSA_PKCS_OAEP: {
			if (array_len < 1)
				croak("Insufficient parameters for rsa-pkcs-oaep");

			INIT_PARAMS(CK_RSA_PKCS_OAEP_PARAMS);
			params->source = CKZ_DATA_SPECIFIED;

			params->hashAlg = get_mechanism_type(array[0]);
			SV* mgf_argument = array_len > 1 ? array[1] : array[0];
			params->mgf = map_get(generators, mgf_argument, "generator");

			if (array_len > 2)
				params->pSourceData = get_buffer(array[2], &params->ulSourceDataLen);

			break;
		}

		case CKM_RSA_AES_KEY_WRAP: {
			if (array_len < 2)
				croak("Insufficient parameters for rsa-aes-key-wrap");

			INIT_PARAMS(CK_RSA_AES_KEY_WRAP_PARAMS);

			params->ulAESKeyBits = SvIV(array[0]);

			CK_RSA_PKCS_OAEP_PARAMS* oaep_params = safecalloc(1, sizeof(CK_RSA_PKCS_OAEP_PARAMS));
			SAVEFREEPV(oaep_params);
			params->pOAEPParams = oaep_params;

			oaep_params->source = CKZ_DATA_SPECIFIED;

			oaep_params->hashAlg = get_mechanism_type(array[1]);
			SV* mgf_argument = array_len > 2 ? array[2] : array[1];
			oaep_params->mgf = map_get(generators, mgf_argument, "generator");

			if (array_len > 3)
				oaep_params->pSourceData = get_buffer(array[3], &oaep_params->ulSourceDataLen);

			break;
		}

		case CKM_EDDSA: {
			if (array_len) {



( run in 0.469 second using v1.01-cache-2.11-cpan-e1769b4cff6 )