⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fipstest.c

📁 支持SSL v2/v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509v3证书等安全协议或标准的开发库编译用到NSPR
💻 C
📖 第 1 页 / 共 3 页
字号:
    des_status = DES_Decrypt( des_context, des_computed_plaintext,                              &des_bytes_decrypted, FIPS_DES_DECRYPT_LENGTH,                              des_ecb_known_ciphertext,                              FIPS_DES_ENCRYPT_LENGTH );    DES_DestroyContext( des_context, PR_TRUE );    if( ( des_status != SECSuccess ) ||        ( des_bytes_decrypted != FIPS_DES_DECRYPT_LENGTH ) ||        ( PORT_Memcmp( des_computed_plaintext, des_ecb_known_plaintext,                       FIPS_DES_DECRYPT_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    /******************************************************/    /* DES-CBC Single-Round Known Answer Encryption Test. */    /******************************************************/    des_context = DES_CreateContext( des_known_key,                                     des_cbc_known_initialization_vector,                                     NSS_DES_CBC, PR_TRUE );    if( des_context == NULL )        return( CKR_HOST_MEMORY );    des_status = DES_Encrypt( des_context, des_computed_ciphertext,                              &des_bytes_encrypted, FIPS_DES_ENCRYPT_LENGTH,                              des_cbc_known_plaintext,                              FIPS_DES_DECRYPT_LENGTH );    DES_DestroyContext( des_context, PR_TRUE );    if( ( des_status != SECSuccess ) ||        ( des_bytes_encrypted != FIPS_DES_ENCRYPT_LENGTH ) ||        ( PORT_Memcmp( des_computed_ciphertext, des_cbc_known_ciphertext,                       FIPS_DES_ENCRYPT_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    /******************************************************/    /* DES-CBC Single-Round Known Answer Decryption Test. */    /******************************************************/    des_context = DES_CreateContext( des_known_key,                                     des_cbc_known_initialization_vector,                                     NSS_DES_CBC, PR_FALSE );    if( des_context == NULL )        return( CKR_HOST_MEMORY );    des_status = DES_Decrypt( des_context, des_computed_plaintext,                              &des_bytes_decrypted, FIPS_DES_DECRYPT_LENGTH,                              des_cbc_known_ciphertext,                              FIPS_DES_ENCRYPT_LENGTH );    DES_DestroyContext( des_context, PR_TRUE );    if( ( des_status != SECSuccess ) ||        ( des_bytes_decrypted != FIPS_DES_DECRYPT_LENGTH ) ||        ( PORT_Memcmp( des_computed_plaintext, des_cbc_known_plaintext,                       FIPS_DES_DECRYPT_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    return( CKR_OK );}static CK_RVpk11_fips_DES3_PowerUpSelfTest( void ){    /* DES3 Known Key (56-bits). */    static PRUint8 des3_known_key[] = { "ANSI Triple-DES Key Data" };    /* DES3-CBC Known Initialization Vector (64-bits). */    static PRUint8 des3_cbc_known_initialization_vector[] = { "Security" };    /* DES3 Known Plaintext (64-bits). */    static PRUint8 des3_ecb_known_plaintext[] = { "Netscape" };    static PRUint8 des3_cbc_known_plaintext[] = { "Netscape" };    /* DES3 Known Ciphertext (64-bits). */    static PRUint8 des3_ecb_known_ciphertext[] = {			   0x55,0x8e,0xad,0x3c,0xee,0x49,0x69,0xbe};    static PRUint8 des3_cbc_known_ciphertext[] = {			   0x43,0xdc,0x6a,0xc1,0xaf,0xa6,0x32,0xf5};    /* DES3 variables. */    PRUint8        des3_computed_ciphertext[FIPS_DES3_ENCRYPT_LENGTH];    PRUint8        des3_computed_plaintext[FIPS_DES3_DECRYPT_LENGTH];    DESContext *   des3_context;    unsigned int   des3_bytes_encrypted;    unsigned int   des3_bytes_decrypted;    SECStatus      des3_status;    /*******************************************************/    /* DES3-ECB Single-Round Known Answer Encryption Test. */    /*******************************************************/    des3_context = DES_CreateContext( des3_known_key, NULL,                                     NSS_DES_EDE3, PR_TRUE );    if( des3_context == NULL )        return( CKR_HOST_MEMORY );    des3_status = DES_Encrypt( des3_context, des3_computed_ciphertext,                               &des3_bytes_encrypted, FIPS_DES3_ENCRYPT_LENGTH,                               des3_ecb_known_plaintext,                               FIPS_DES3_DECRYPT_LENGTH );    DES_DestroyContext( des3_context, PR_TRUE );    if( ( des3_status != SECSuccess ) ||        ( des3_bytes_encrypted != FIPS_DES3_ENCRYPT_LENGTH ) ||        ( PORT_Memcmp( des3_computed_ciphertext, des3_ecb_known_ciphertext,                       FIPS_DES3_ENCRYPT_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    /*******************************************************/    /* DES3-ECB Single-Round Known Answer Decryption Test. */    /*******************************************************/    des3_context = DES_CreateContext( des3_known_key, NULL,                                     NSS_DES_EDE3, PR_FALSE );    if( des3_context == NULL )        return( CKR_HOST_MEMORY );    des3_status = DES_Decrypt( des3_context, des3_computed_plaintext,                               &des3_bytes_decrypted, FIPS_DES3_DECRYPT_LENGTH,                               des3_ecb_known_ciphertext,                               FIPS_DES3_ENCRYPT_LENGTH );    DES_DestroyContext( des3_context, PR_TRUE );    if( ( des3_status != SECSuccess ) ||        ( des3_bytes_decrypted != FIPS_DES3_DECRYPT_LENGTH ) ||        ( PORT_Memcmp( des3_computed_plaintext, des3_ecb_known_plaintext,                       FIPS_DES3_DECRYPT_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    /*******************************************************/    /* DES3-CBC Single-Round Known Answer Encryption Test. */    /*******************************************************/    des3_context = DES_CreateContext( des3_known_key,                                      des3_cbc_known_initialization_vector,                                      NSS_DES_EDE3_CBC, PR_TRUE );    if( des3_context == NULL )        return( CKR_HOST_MEMORY );    des3_status = DES_Encrypt( des3_context, des3_computed_ciphertext,                               &des3_bytes_encrypted, FIPS_DES3_ENCRYPT_LENGTH,                               des3_cbc_known_plaintext,                               FIPS_DES3_DECRYPT_LENGTH );    DES_DestroyContext( des3_context, PR_TRUE );    if( ( des3_status != SECSuccess ) ||        ( des3_bytes_encrypted != FIPS_DES3_ENCRYPT_LENGTH ) ||        ( PORT_Memcmp( des3_computed_ciphertext, des3_cbc_known_ciphertext,                       FIPS_DES3_ENCRYPT_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    /*******************************************************/    /* DES3-CBC Single-Round Known Answer Decryption Test. */    /*******************************************************/    des3_context = DES_CreateContext( des3_known_key,                                      des3_cbc_known_initialization_vector,                                      NSS_DES_EDE3_CBC, PR_FALSE );    if( des3_context == NULL )        return( CKR_HOST_MEMORY );    des3_status = DES_Decrypt( des3_context, des3_computed_plaintext,                               &des3_bytes_decrypted, FIPS_DES3_DECRYPT_LENGTH,                               des3_cbc_known_ciphertext,                               FIPS_DES3_ENCRYPT_LENGTH );    DES_DestroyContext( des3_context, PR_TRUE );    if( ( des3_status != SECSuccess ) ||        ( des3_bytes_decrypted != FIPS_DES3_DECRYPT_LENGTH ) ||        ( PORT_Memcmp( des3_computed_plaintext, des3_cbc_known_plaintext,                       FIPS_DES3_DECRYPT_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    return( CKR_OK );}static CK_RVpk11_fips_MD2_PowerUpSelfTest( void ){    /* MD2 Known Hash Message (512-bits). */    static PRUint8 md2_known_hash_message[] = {	"The test message for the MD2, MD5, and SHA-1 hashing algorithms." };    /* MD2 Known Digest Message (128-bits). */    static PRUint8 md2_known_digest[]  = {				   0x41,0x5a,0x12,0xb2,0x3f,0x28,0x97,0x17,				   0x0c,0x71,0x4e,0xcc,0x40,0xc8,0x1d,0x1b};    /* MD2 variables. */    MD2Context * md2_context;    unsigned int md2_bytes_hashed;    PRUint8      md2_computed_digest[MD2_LENGTH];    /***********************************************/    /* MD2 Single-Round Known Answer Hashing Test. */    /***********************************************/    md2_context = MD2_NewContext();    if( md2_context == NULL )        return( CKR_HOST_MEMORY );    MD2_Begin( md2_context );    MD2_Update( md2_context, md2_known_hash_message,                FIPS_MD2_HASH_MESSAGE_LENGTH );    MD2_End( md2_context, md2_computed_digest, &md2_bytes_hashed, MD2_LENGTH );    MD2_DestroyContext( md2_context , PR_TRUE );    if( ( md2_bytes_hashed != MD2_LENGTH ) ||        ( PORT_Memcmp( md2_computed_digest, md2_known_digest,                       MD2_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    return( CKR_OK );}static CK_RVpk11_fips_MD5_PowerUpSelfTest( void ){    /* MD5 Known Hash Message (512-bits). */    static PRUint8 md5_known_hash_message[] = {	"The test message for the MD2, MD5, and SHA-1 hashing algorithms." };    /* MD5 Known Digest Message (128-bits). */    static PRUint8 md5_known_digest[]  = {				   0x25,0xc8,0xc0,0x10,0xc5,0x6e,0x68,0x28,				   0x28,0xa4,0xa5,0xd2,0x98,0x9a,0xea,0x2d};    /* MD5 variables. */    PRUint8        md5_computed_digest[MD5_LENGTH];    SECStatus      md5_status;    /***********************************************/    /* MD5 Single-Round Known Answer Hashing Test. */    /***********************************************/    md5_status = MD5_HashBuf( md5_computed_digest, md5_known_hash_message,                              FIPS_MD5_HASH_MESSAGE_LENGTH );    if( ( md5_status != SECSuccess ) ||        ( PORT_Memcmp( md5_computed_digest, md5_known_digest,                       MD5_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    return( CKR_OK );}static CK_RVpk11_fips_SHA1_PowerUpSelfTest( void ){    /* SHA-1 Known Hash Message (512-bits). */    static PRUint8 sha1_known_hash_message[] = {	 "The test message for the MD2, MD5, and SHA-1 hashing algorithms." };    /* SHA-1 Known Digest Message (160-bits). */    static PRUint8 sha1_known_digest[] = {			       0x0a,0x6d,0x07,0xba,0x1e,0xbd,0x8a,0x1b,			       0x72,0xf6,0xc7,0x22,0xf1,0x27,0x9f,0xf0,			       0xe0,0x68,0x47,0x7a};    /* SHA-1 variables. */    PRUint8        sha1_computed_digest[SHA1_LENGTH];    SECStatus      sha1_status;    /*************************************************/    /* SHA-1 Single-Round Known Answer Hashing Test. */    /*************************************************/    sha1_status = SHA1_HashBuf( sha1_computed_digest, sha1_known_hash_message,                                FIPS_SHA1_HASH_MESSAGE_LENGTH );    if( ( sha1_status != SECSuccess ) ||        ( PORT_Memcmp( sha1_computed_digest, sha1_known_digest,                       SHA1_LENGTH ) != 0 ) )        return( CKR_DEVICE_ERROR );    return( CKR_OK );}static CK_RVpk11_fips_RSA_PowerUpSelfTest( void ){    /* RSA Known Modulus used in both Public/Private Key Values (520-bits). */    static PRUint8 rsa_modulus[FIPS_RSA_MODULUS_LENGTH] = {                                 0x00,0xa1,0xe9,0x5e,0x66,0x88,0xe2,0xf2,                                 0x2b,0xe7,0x70,0x36,0x33,0xbc,0xeb,0x55,                                 0x55,0xf1,0x60,0x18,0x3c,0xfb,0xd2,0x79,                                 0xf6,0xc4,0xb8,0x09,0xe3,0x12,0xf6,0x63,                                 0x6d,0xc7,0x8e,0x19,0xc0,0x0e,0x10,0x78,                                 0xc1,0xfe,0x2a,0x41,0x74,0x2d,0xf7,0xc4,                                 0x69,0xa7,0x3c,0xbc,0x8a,0xc8,0x31,0x2b,                                 0x4f,0x60,0xf0,0xf1,0xec,0x5a,0x29,0xec,                                 0x6b};    /* RSA Known Public Key Values (8-bits). */    static PRUint8 rsa_public_exponent[] = { 0x03 };    /* RSA Known Private Key Values (version                 is   8-bits), */    /*                              (private exponent        is 512-bits), */    /*                              (private prime0          is 264-bits), */    /*                              (private prime1          is 264-bits), */    /*                              (private prime exponent0 is 264-bits), */    /*                              (private prime exponent1 is 264-bits), */    /*                          and (private coefficient     is 256-bits). */    static PRUint8 rsa_version[] = { 0x00 };    static PRUint8 rsa_private_exponent[FIPS_RSA_PRIVATE_EXPONENT_LENGTH] = {				  0x6b,0xf0,0xe9,0x99,0xb0,0x97,0x4c,0x1d,				  0x44,0xf5,0x79,0x77,0xd3,0x47,0x8e,0x39,				  0x4b,0x95,0x65,0x7d,0xfd,0x36,0xfb,0xf9,				  0xd8,0x7a,0xb1,0x42,0x0c,0xa4,0x42,0x48,				  0x20,0x1c,0x6b,0x7d,0x5d,0xa3,0x58,0xd6,				  0x95,0xd6,0x41,0xe3,0xd6,0x73,0xad,0xdb,				  0x3b,0x89,0x00,0x8a,0xcd,0x1d,0xb9,0x06,				  0xac,0xac,0x0e,0x02,0x72,0x1c,0xf8,0xab };    static PRUint8 rsa_prime0[FIPS_RSA_PRIME0_LENGTH]   = {				      0x00,0xd2,0x2c,0x9d,0xef,0x7c,0x8f,0x58,				      0x93,0x19,0xa1,0x77,0x0e,0x38,0x3e,0x85,				      0xb4,0xaf,0xcc,0x99,0xa5,0x43,0xbf,0x97,				      0xdc,0x46,0xb8,0x3f,0x6e,0x85,0x18,0x00,				      0x81};    static PRUint8 rsa_prime1[FIPS_RSA_PRIME1_LENGTH]   = {				      0x00,0xc5,0x36,0xda,0x94,0x85,0x0c,0x1a,				      0xed,0x03,0xc7,0x67,0x90,0x34,0x0b,0xb9,				      0xec,0x1e,0x22,0xa2,0x15,0x50,0xc4,0xfd,				      0xe9,0x17,0x36,0x9d,0x7a,0x29,0xe6,0x76,				      0xeb};    static PRUint8 rsa_exponent0[FIPS_RSA_EXPONENT0_LENGTH] = {					 0x00,0x8c,0x1d,0xbe,0x9f,0xa8,					 0x5f,0x90,0x62,0x11,0x16,0x4f,					 0x5e,0xd0,0x29,0xae,0x78,0x75,					 0x33,0x11,0x18,0xd7,0xd5,0x0f,					 0xe8,0x2f,0x25,0x7f,0x9f,0x03,					 0x65,0x55,0xab};    static PRUint8 rsa_exponent1[FIPS_RSA_EXPONENT1_LENGTH] = {					 0x00,0x83,0x79,0xe7,0x0d,0xae,					 0x08,0x11,0xf3,0x57,0xda,0x45,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -