Does this bother anyone else? Below, I perform a cast to RSA::PublicKey. 
Instead of writing the Subject Public Key Info (SPKI), it writes the 
private key.

$ cat cryptopp-test.cpp
...
int main(int argc, char* argv[])
{
    AutoSeededRandomPool prng;
    
    RSA::PrivateKey rsaPrivate;
    rsaPrivate.GenerateRandomWithKeySize(prng, 2048);

    const RSA::PublicKey& rsaPublic = 
dynamic_cast<RSA::PublicKey&>(rsaPrivate);

    FileSink sink("rsa-public.der");
    rsaPublic.Save(sink);

    return 0;
}

$ g++ -DNDEBUG=1 -g3 -O2 -Wall -Wextra -Wno-unused-parameter 
-I/usr/local/include/cryptopp cryptopp-test.cpp 
/usr/local/lib/libcryptopp.a -o cryptopp-test.exe

$ ./cryptopp-test.exe

$ dumpasn1 rsa-public.der
   0 1211: SEQUENCE {
   4    1:   INTEGER 0
   7   13:   SEQUENCE {
   9    9:     OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1)
  20    0:     NULL
         :     }
  22 1189:   OCTET STRING, encapsulates {
  26 1185:     SEQUENCE {
  30    1:       INTEGER 0
  33  257:       INTEGER
         :         00 AA 6A C5 43 08 88 AB 12 3F 49 2C 3E DC 4C D9
         :         45 A3 92 8E 42 60 95 B3 96 84 21 CD 7B 2F 56 F4
         :         DD 6C 4F 2B 85 6D 5E 83 DF 18 0D 44 FC 66 7A BA
         :         94 FB 3A 43 7F 58 FA C4 40 CF 1D AB 86 43 48 6F
         :         2A 64 C9 18 46 4A 5D F4 7D 53 78 87 13 FE 9F 0C
         :         EB 24 2B FA 73 1E 70 3E 01 4B 63 D1 AA 36 79 33
         :         42 72 4C D4 64 DA FD 17 FD E9 BE 1A 2E 05 6B 44
         :         13 19 41 6F 32 6D 8F 55 F5 EC 9C B0 96 6D 60 2D
         :                 [ Another 129 bytes skipped ]
 294    1:       INTEGER 17
 297  256:       INTEGER
         :         1E 12 D7 84 4C CC D2 E5 1A 3A 16 DD EA A4 26 57
         :         95 56 19 1A C5 C0 10 A2 17 51 42 61 08 5A A3 AE
         :         9A A4 8F 35 A9 E3 80 AE E6 20 75 95 F3 F7 8A 56
         :         86 AF ED CB 2D D1 E6 65 CA 32 69 90 29 FD B9 43
         :         B7 6E C8 0C 67 79 FD F7 FF AB DB 9A 1D DF D5 1A
         :         6F CB 86 8C C9 22 DD C3 FE 3E CA A5 91 24 72 75
         :         23 3A BC 11 CC 4A C7 FF A1 B8 22 BC D3 C7 A2 99
         :         F5 65 E6 72 4F 91 C3 E0 1A B2 3D 47 B8 F2 DA C8
         :                 [ Another 128 bytes skipped ]
 557  129:       INTEGER
         :         00 CB F0 DE 97 43 0C 03 D5 0D EC 6E EF 0A 7B 62
         :         CF F5 25 34 0F C1 86 88 BD 97 6F 78 FE 72 36 E6
         :         A9 66 33 6B 52 27 D6 93 DE 97 71 D2 2C 3B 28 22
         :         28 E9 84 A0 38 6C C3 C1 F8 81 C3 AF 65 F2 F1 8F
         :         68 C3 90 F1 00 90 BB 9D 94 46 FF 89 60 DE 55 51
         :         42 6A 73 43 B2 52 EA DE 18 94 2C D0 8C FB A1 A6
         :         64 AD E4 D4 32 1E 66 88 90 2C F9 DC A8 08 5B 5E
         :         E4 4F 86 4A E8 88 34 CB 39 FD 85 1F 90 EA FD 0D
         :         B3
 689  129:       INTEGER
         :         00 D5 EB 2F A2 B6 C5 64 B2 22 4B 80 1D 70 8B BC
         :         BC B2 3C CB 27 6B E0 77 6E 6F 6D 11 13 47 79 64
         :         C5 B5 6A 0A 10 1B C1 3E 7E D6 E3 2E C2 BB B5 00
         :         C0 D9 EE 5F 3A 89 E6 12 75 59 4A 5F CF A6 AD D5
         :         FF A1 B7 A3 B0 73 33 EC 52 68 5C 21 8E F4 A6 CE
         :         DB C7 67 30 7D B2 F5 FC B0 1C 24 ED 88 B3 BE 6E
         :         65 E2 68 3D E8 98 99 AA 45 AA 29 64 DA 0E 44 81
         :         E5 5D 85 23 BC 2A DF 2B A4 10 64 1E 80 64 32 21
         :         6B
 821  128:       INTEGER
         :         17 FE 38 4E 07 E3 4B BE B6 58 0D 0D 10 4A C0 54
         :         B3 6D C9 E3 BC 6A 2E 34 6C 2B 3B 69 3A 9D 0C 13
         :         ED E7 EE 82 22 CD F3 47 5D 1C 73 14 43 31 E5 E6
         :         B2 0F 9A 60 FD BC AD 68 87 BC AB 39 2B A3 F2 C1
         :         07 F2 EF 2D 3E 34 30 A8 08 5A 4C 65 BF CD CD 53
         :         1B 95 17 05 EB A3 29 30 11 6E AF 1F A5 22 13 93
         :         5F C0 91 6F 4E DE E2 E3 C9 0E 56 31 E2 DD 92 B1
         :         72 C4 81 48 88 7E AE 7F 4B 00 9A 4D 48 D2 7A 15
 952  128:       INTEGER
         :         58 15 8C 15 D2 C9 C0 0D 1D 2E 25 B1 C4 EE 3E A8
         :         0D 28 17 6A 95 D4 E5 E2 2D E1 9D 9E 86 D7 A1 F7
         :         0E 76 F5 15 B1 13 55 F7 FE 21 4F 7D 5C 59 96 E5
         :         FF 62 27 36 38 C8 25 B7 D9 78 FA 46 71 CF 1B E1
         :         BB 0F 61 84 E4 24 70 5E 2A F8 C2 86 28 80 EB C3
         :         E8 B2 04 E8 76 DD C2 66 A2 2D 52 BF D1 8A A5 ED
         :         B7 94 55 BA 20 B7 BE 95 27 F2 ED 4A BA 94 AD F5
         :         08 63 FF A7 D5 6A F3 DA 24 DD EE 71 1A 32 C2 77
1083  129:       INTEGER
         :         00 A4 C3 62 F8 2A A6 0A B9 BE 64 C6 3A AC CF 0A
         :         0C 60 A6 05 B1 CF 2B 95 4C 28 E6 99 35 89 F1 FF
         :         0B 67 4C 34 F1 11 A7 88 E2 4D 1E 90 28 2F A4 30
         :         46 46 C8 F1 41 59 34 6A A3 93 D4 5D B3 DB 25 12
         :         74 C7 10 CB 13 2C 61 5B 6C F3 3F C2 C5 14 CC CA
         :         37 C3 93 A5 13 20 78 13 4A 91 10 8B 3E 32 7B 2A
         :         B0 3E 87 5C 69 29 66 2D 33 F4 2F 4B CC D1 C9 31
         :         44 57 3A 19 8E D3 95 73 6C 79 3B E7 B8 8A BD F8
         :         65
         :       }
         :     }
         :   }

0 warnings, 0 errors.

-- 
-- 
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
--- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to