PARCSigner * ccnxValidationHmacSha256_CreateSigner(PARCBuffer *secretKey) { PARCSymmetricKeyStore *keyStore = parcSymmetricKeyStore_Create(secretKey); PARCSymmetricKeySigner *symmetricSigner = parcSymmetricKeySigner_Create(keyStore, PARC_HASH_SHA256); parcSymmetricKeyStore_Release(&keyStore); PARCSigner *signer = parcSigner_Create(symmetricSigner, PARCSymmetricKeySignerAsSigner); parcSymmetricKeySigner_Release(&symmetricSigner); return signer; }
static PARCSymmetricKeySigner * _createSigner() { PARCBuffer *secret_key = parcSymmetricKeyStore_CreateKey(256); PARCSymmetricKeyStore *symmetricKeyStore = parcSymmetricKeyStore_Create(secret_key); parcBuffer_Release(&secret_key); PARCSymmetricKeySigner *privateKeySigner = parcSymmetricKeySigner_Create(symmetricKeyStore, PARC_HASH_SHA256); parcSymmetricKeyStore_Release(&symmetricKeyStore); return privateKeySigner; }
PARCSigner * component_Codec_GetSigner(RtaConnection *conn) { PARCSigner *signer = NULL; SignerType signertype = signer_GetImplementationType(rtaConnection_GetParameters(conn)); switch (signertype) { case SignerType_SymmetricKeySigner: { struct symmetrickeysigner_params params; bool success = symmetricKeySigner_GetConnectionParams(rtaConnection_GetParameters(conn), ¶ms); assertTrue(success, "Could not retrieve symmetricKeySigner_GetConnectionParams"); PARCSymmetricKeyStore *symmetricKeyStore = parcSymmetricKeyStore_OpenFile(params.filename, params.password, PARCCryptoHashType_SHA256); PARCSymmetricKeySigner *symmetricKeySigner = parcSymmetricKeySigner_Create(symmetricKeyStore, PARCCryptoHashType_SHA256); parcSymmetricKeyStore_Release(&symmetricKeyStore); signer = parcSigner_Create(symmetricKeySigner, PARCSymmetricKeySignerAsSigner); parcSymmetricKeySigner_Release(&symmetricKeySigner); assertNotNull(signer, "got null opening FileKeystore '%s'\n", params.filename); break; } case SignerType_PublicKeySigner: { struct publickeysigner_params params; bool success = publicKeySigner_GetConnectionParams(rtaConnection_GetParameters(conn), ¶ms); assertTrue(success, "Could not retrieve publicKeySigner_GetConnectionParams"); PARCPkcs12KeyStore *pkcs12KeyStore = parcPkcs12KeyStore_Open(params.filename, params.password, PARCCryptoHashType_SHA256); PARCKeyStore *keyStore = parcKeyStore_Create(pkcs12KeyStore, PARCPkcs12KeyStoreAsKeyStore); parcPkcs12KeyStore_Release(&pkcs12KeyStore); PARCPublicKeySigner *publicKeySigner = parcPublicKeySigner_Create(keyStore, PARCSigningAlgorithm_RSA, PARCCryptoHashType_SHA256); parcKeyStore_Release(&keyStore); signer = parcSigner_Create(publicKeySigner, PARCPublicKeySignerAsSigner); parcPublicKeySigner_Release(&publicKeySigner); assertNotNull(signer, "got null opening FileKeystore '%s'\n", params.filename); break; } default: assertTrue(0, "Unsupported signer type %d", signertype); } assertNotNull(signer, "Did not match a known signer"); return signer; }
static bool _parcSymmetricKeySigner_Finalize(PARCSymmetricKeySigner **instancePtr) { assertNotNull(instancePtr, "Parameter must be a non-null pointer to a PARCSymmetricKeySigner pointer."); PARCSymmetricKeySigner *signer = (PARCSymmetricKeySigner *) *instancePtr; if (signer->secretKeyHash != NULL) { parcCryptoHash_Release(&signer->secretKeyHash); } if (signer->hasher != NULL) { parcCryptoHasher_Release(&signer->hasher); } if (signer->keyStore != NULL) { parcSymmetricKeyStore_Release(&signer->keyStore); } if (signer->generalKeyStore != NULL) { parcKeyStore_Release(&signer->generalKeyStore); } return true; }