MCPcopy Create free account
hub / github.com/apple/foundationdb / sign

Method sign

flow/PKey.cpp:268–285  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

266}
267
268StringRef PrivateKey::sign(Arena& arena, StringRef data, const EVP_MD& digest) const {
269 auto key = nativeHandle();
270 ASSERT(key);
271 auto mdctx = AutoCPointer(::EVP_MD_CTX_create(), &::EVP_MD_CTX_free);
272 if (!mdctx)
273 traceAndThrowDsa("PKeySignInitError");
274 if (1 != ::EVP_DigestSignInit(mdctx, nullptr, &digest, nullptr, nativeHandle()))
275 traceAndThrowDsa("PKeySignInitError");
276 if (1 != ::EVP_DigestSignUpdate(mdctx, data.begin(), data.size()))
277 traceAndThrowDsa("PKeySignUpdateError");
278 auto sigLen = size_t{};
279 if (1 != ::EVP_DigestSignFinal(mdctx, nullptr, &sigLen)) // assess the length first
280 traceAndThrowDsa("PKeySignFinalGetLengthError");
281 auto sigBuf = new (arena) uint8_t[sigLen];
282 if (1 != ::EVP_DigestSignFinal(mdctx, sigBuf, &sigLen))
283 traceAndThrowDsa("SignTokenFinalError");
284 return StringRef(sigBuf, sigLen);
285}
286
287bool PrivateKey::verify(StringRef data, StringRef signature, const EVP_MD& digest) const {
288 return doVerifyStringSignature(data, signature, digest, nativeHandle());

Callers 3

testPublicKeyFunction · 0.80
testPrivateKeyFunction · 0.80
signTokenFunction · 0.80

Calls 5

AutoCPointerClass · 0.85
traceAndThrowDsaFunction · 0.85
StringRefClass · 0.50
beginMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected