Hi,

we have an SOD (a CMS for e-passports and e-ID cards) file that we can read
out and verify nicely if the signature algo is RSA_PKCS1_PADDING.

But if the algo is RSA_PKCS1_PSS_PADDING (see attached txt for an asn1 
dump),
the verification fails.
Below is a part of the stack trace, it looks like  openssl still thinks 
the algorithm
is RSA_PKCS1_PADDING instead of RSA_PKCS1_PSS_PADDING:

CMS_verify() {
   cms_signerinfo_verify() {
     EVP_DigestVerifyInit() {
         do_sigver_init() {
           EVP_PKEY_CTX_set_signature_md() {
             ...
                pkey_rsa_ctrl() {
                  // type == EVP_PKEY_CTRL_DIGESTINIT

     EVP_DigestVerifyFinal() {
       ...
         pkey_rsa_verify(EVP_PKEY_CTX *ctx, ...) {
           RSA_PKEY_CTX *rctx = ctx->data;
           // rctx->pad_mode == RSA_PKCS1_PADDING     (???)
           // and EVP_MD_type(rctx->md) = NID_sha256  (OK)

Someone knows if the problem is with the encoding of the signature algo
in the file, or with openssl itself?

Thanks!
Stef

   0  119: [APPLICATION 23] {
   4   48:   SEQUENCE {
   8    6:     OBJECT IDENTIFIER signedData (1 2 840 113549 1 7 2)
  19  160:     [0] {
  23   48:       SEQUENCE {
  27    2:         INTEGER 3
  30   49:         SET {
  32   48:           SEQUENCE {
  34    6:             OBJECT IDENTIFIER '2 16 840 1 101 3 4 2 1'            
(SHA256)
         :             }
         :           }
  45   48:         SEQUENCE {
  48    6:           OBJECT IDENTIFIER '2 23 136 1 1 1'
  56  160:           [0] {
  59    4:             OCTET STRING, encapsulates {
  62   48:                 SEQUENCE {
  65    2:                   INTEGER 0
  68   48:                   SEQUENCE {
  70    6:                     OBJECT IDENTIFIER '2 16 840 1 101 3 4 2 1'       
     (SHA256)
         :                     }
  81   48:                   SEQUENCE {
  83   48:                     SEQUENCE {
  85    2:                       INTEGER 1
  88    4:                       OCTET STRING
         :                   2C 51 36 2F 0B 0D DC 58 C1 67 FB EC AE B3 6B EC
         :                   51 DA 1C FC 97 23 4A 72 9E AB 2C AE 89 F8 C5 2B    
   (hash 0x01)
         :                       }
 122   48:                     SEQUENCE {
 124    2:                       INTEGER 13
 127    4:                       OCTET STRING
         :                   BF 2C 0F 06 DB DB D5 F9 0C C7 8E CB 76 02 5C 9D
         :                   D1 04 F1 C0 21 D2 57 4F 57 1B 66 F1 15 43 0F 5E    
       (hash 0x13)
         :                       }
 161   48:                     SEQUENCE {
 163    2:                       INTEGER 11
 166    4:                       OCTET STRING
         :                   9D 83 2F 80 A0 82 D0 29 F3 64 0F 2F 62 78 6F AF
         :                   89 2E 1A 6F 4A FA F0 AE 29 42 5E 51 C4 AC B2 62    
    (hash 0x11)
         :                       }
         :                     }
         :                   }
         :                 }
         :             }
         :           }
 200   49:         SET {
 204   48:           SEQUENCE {
 208    2:             INTEGER 1
 211  128:             [0]
         :               2D B6 81 D6 A3 72 D3 A2 27 53 03 E3 F2 90 33 36     
SubjectKeyIdentifier
         :               2C C7 00 9D
 233   48:             SEQUENCE {
 235    6:               OBJECT IDENTIFIER '2 16 840 1 101 3 4 2 1'            
(SHA256)
         :               }
 246  160:             [0] {
 248   48:               SEQUENCE {
 250    6:                 OBJECT IDENTIFIER contentType (1 2 840 113549 1 9 3)
 261   49:                 SET {
 263    6:                   OBJECT IDENTIFIER '2 23 136 1 1 1'
         :                   }
         :                 }
 271   48:               SEQUENCE {
 273    6:                 OBJECT IDENTIFIER
         :                   messageDigest (1 2 840 113549 1 9 4)
 284   49:                 SET {
 286    4:                   OCTET STRING
         :                   43 D2 E0 C5 3C ED DF F9 3A D9 1B 26 72 D1 16 90    
    (hash over
         :                   F5 3B 26 04 86 F0 7F 05 0A CB 6A 25 D8 2A 7B C3    
     the eContent)
         :                   }
         :                 }
         :               }
 320   48:             SEQUENCE {
 322    6:               OBJECT IDENTIFIER '1 2 840 113549 1 1 10'      
(id-RSASSA-PSS)
 333   48:               SEQUENCE {
 335  160:                 [0] {
 337   48:                   SEQUENCE {
 339    6:                     OBJECT IDENTIFIER '2 16 840 1 101 3 4 2 1'       
     (SHA256)
         :                     }
         :                   }
 350  161:                 [1] {
 352   48:                   SEQUENCE {
 354    6:                     OBJECT IDENTIFIER '1 2 840 113549 1 1 8'         
      (id-mgf1)
 365   48:                     SEQUENCE {
 367    6:                       OBJECT IDENTIFIER '2 16 840 1 101 3 4 2 1'     
       (SHA256)
         :                       }
         :                     }
         :                   }
 378  162:                 [2] {
 380    2:                   INTEGER 32                                         
      (salt length)
         :                   }
         :                 }
         :               }
 383    4:             OCTET STRING
         :               09 27 B6 73 5B 82 E1 3E C5 9D 1E D5 69 1C D0 F5
         :               FD 3C D7 08 7D B6 6F EC 6D 1A 8B D1 52 2A 7F 92
         :               F7 87 54 9E 1B 66 9F 8C 5D 4B C8 EF C3 1D 66 69
         :               14 43 10 70 08 AB 0E 20 03 AD 22 47 51 A4 8F 8C
         :               A2 2A 2F B3 87 AA A3 D0 0C 79 25 9C 8D D2 81 91
         :               96 2E 32 A9 45 49 53 99 7B 44 6B AA 44 F7 C2 1B
         :               EC 26 C1 90 C4 80 BF D9 00 8C 9A 64 61 B3 1B A5
         :               A8 2F 28 60 20 31 89 E7 A9 C6 0B 88 85 BD 5A DC
         :               B5 83 F3 36 53 D4 BA 14 20 0D 53 30 C4 46 7A 8A
         :               81 E7 86 F7 17 B1 57 3C E1 5F 14 D9 4E BF 0C 03
         :               C7 9F 52 AA 3F C2 39 5F A9 FA 88 8A 39 E8 F7 98
         :               0B 3C 4B 5B 29 62 51 AC 40 7C 71 75 91 22 23 1B
         :               22 8D 1B C7 45 90 37 5A 78 A0 FB 50 3C C4 78 05
         :               2A A3 1B DB 97 53 AA 1B 24 CD 41 85 EA 8E 8F 57
         :               86 8D 22 02 90 9C 12 56 4A 60 97 6F 8B 46 4C 71
         :               EC A0 69 BE 82 B1 86 ED 4F A2 3C E4 BF 16 0F 69
         :             }
         :           }
         :         }
         :       }
         :     }
         :   }


Reply via email to