301N November 2018
/
encrypt
15:21 9nov
main.cpp@6:13ef02c7dd17, 2018-11-09 (annotated)
- Committer:
- kpan
- Date:
- Fri Nov 09 10:34:20 2018 +0000
- Revision:
- 6:13ef02c7dd17
- Parent:
- 5:cc8680cda38f
- Child:
- 7:8331ee141606
Error Message
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
preyaa4 | 0:5d1b6c97e2fe | 1 | #include "mbed.h" |
preyaa4 | 0:5d1b6c97e2fe | 2 | #include "mbedtls/pk.h" |
preyaa4 | 0:5d1b6c97e2fe | 3 | #include "mbedtls/ctr_drbg.h" |
kpan | 6:13ef02c7dd17 | 4 | #include "mbedtls/error.h" |
kpan | 1:c8f7fe71d151 | 5 | PwmOut r(LED_RED); |
kpan | 1:c8f7fe71d151 | 6 | PwmOut g(LED_GREEN); |
kpan | 1:c8f7fe71d151 | 7 | PwmOut b(LED_BLUE); |
kpan | 3:7a6787f99da2 | 8 | Serial pc(USBTX, USBRX); |
kpan | 3:7a6787f99da2 | 9 | int main() |
kpan | 3:7a6787f99da2 | 10 | { |
kpan | 3:7a6787f99da2 | 11 | pc.printf("INITIALIZING..."); |
kpan | 3:7a6787f99da2 | 12 | wait(1); |
kpan | 3:7a6787f99da2 | 13 | r = g = b = 1; |
kpan | 3:7a6787f99da2 | 14 | g = 0; |
preyaa4 | 0:5d1b6c97e2fe | 15 | int ret = 0; |
kpan | 5:cc8680cda38f | 16 | char errbuf[] = ""; |
preyaa4 | 0:5d1b6c97e2fe | 17 | mbedtls_pk_context pk; |
preyaa4 | 0:5d1b6c97e2fe | 18 | |
preyaa4 | 0:5d1b6c97e2fe | 19 | mbedtls_pk_init( &pk ); |
preyaa4 | 0:5d1b6c97e2fe | 20 | const unsigned char key[]="-----BEGIN RSA PUBLIC KEY-----" |
kpan | 3:7a6787f99da2 | 21 | "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMYfnvWtC8Id5bPKae5yXSxQTt" |
kpan | 3:7a6787f99da2 | 22 | "+Zpul6AnnZWfI2TtIarvjHBFUtXRo96y7hoL4VWOPKGCsRqMFDkrbeUjRrx8iL91" |
kpan | 3:7a6787f99da2 | 23 | "4/srnyf6sh9c8Zk04xEOpK1ypvBz+Ks4uZObtjnnitf0NBGdjMKxveTq+VE7BWUI" |
kpan | 3:7a6787f99da2 | 24 | "yQjtQ8mbDOsiLLvh7wIDAQAB" |
kpan | 3:7a6787f99da2 | 25 | "-----END RSA PUBLIC KEY-----"; |
kpan | 3:7a6787f99da2 | 26 | |
preyaa4 | 0:5d1b6c97e2fe | 27 | |
preyaa4 | 0:5d1b6c97e2fe | 28 | /* |
preyaa4 | 0:5d1b6c97e2fe | 29 | * Read the RSA public key |
preyaa4 | 0:5d1b6c97e2fe | 30 | */ |
kpan | 3:7a6787f99da2 | 31 | if( ( ret = mbedtls_pk_parse_public_key( &pk, key,sizeof(key)) ) != 0 ) { |
kpan | 6:13ef02c7dd17 | 32 | mbedtls_strerror( ret, errbuf, 200 ); |
kpan | 6:13ef02c7dd17 | 33 | printf( " failed\n ! mbedtls_pk_parse_public_key returned -0x%04x\n%s\n", -ret , errbuf); |
kpan | 1:c8f7fe71d151 | 34 | g = b = 1; |
kpan | 1:c8f7fe71d151 | 35 | r = 0; |
preyaa4 | 0:5d1b6c97e2fe | 36 | goto exit; |
preyaa4 | 0:5d1b6c97e2fe | 37 | } |
kpan | 3:7a6787f99da2 | 38 | |
kpan | 3:7a6787f99da2 | 39 | unsigned char buf[MBEDTLS_MPI_MAX_SIZE]; |
preyaa4 | 0:5d1b6c97e2fe | 40 | size_t olen = 0; |
preyaa4 | 0:5d1b6c97e2fe | 41 | |
preyaa4 | 0:5d1b6c97e2fe | 42 | /* |
preyaa4 | 0:5d1b6c97e2fe | 43 | * Calculate the RSA encryption of the data. |
preyaa4 | 0:5d1b6c97e2fe | 44 | */ |
kpan | 4:98332985e06f | 45 | pc.printf("\n . Generating the encrypted value" ); |
preyaa4 | 0:5d1b6c97e2fe | 46 | fflush( stdout ); |
kpan | 3:7a6787f99da2 | 47 | const unsigned char to_encrypt[] = "HelloWorld"; |
preyaa4 | 0:5d1b6c97e2fe | 48 | mbedtls_ctr_drbg_context ctr_drbg; |
kpan | 3:7a6787f99da2 | 49 | |
preyaa4 | 0:5d1b6c97e2fe | 50 | if( ( ret = mbedtls_pk_encrypt( &pk, to_encrypt, sizeof(to_encrypt), |
preyaa4 | 0:5d1b6c97e2fe | 51 | buf, &olen, sizeof(buf), |
kpan | 3:7a6787f99da2 | 52 | mbedtls_ctr_drbg_random, &ctr_drbg ) ) != 0 ) { |
kpan | 5:cc8680cda38f | 53 | mbedtls_strerror( ret, errbuf, 200 ); |
kpan | 5:cc8680cda38f | 54 | pc.printf( " failed\n ! mbedtls_pk_encrypt returned -0x%04x\n%s\n", -ret, errbuf ); |
kpan | 1:c8f7fe71d151 | 55 | r = g = 1; |
kpan | 1:c8f7fe71d151 | 56 | b = 0; |
preyaa4 | 0:5d1b6c97e2fe | 57 | goto exit; |
preyaa4 | 0:5d1b6c97e2fe | 58 | } |
kpan | 3:7a6787f99da2 | 59 | exit: |
preyaa4 | 0:5d1b6c97e2fe | 60 | return 0; |
kpan | 2:cee7ee508f77 | 61 | } |