Matthew Raymer
1 year ago
3 changed files with 33 additions and 1 deletions
@ -0,0 +1,25 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
openssl ecparam -name secp256k1 -genkey -noout -out private.pem |
||||
|
openssl ec -in private.pem -pubout -out public.pem |
||||
|
|
||||
|
header='{"alg":"ES256K", "issuer": "", "typ":"JWT"}' |
||||
|
|
||||
|
payload='{"@context": "http://schema.org", "@type": "PlanAction", "identifier": "did:ethr:0xb86913f83A867b5Ef04902419614A6FF67466c12", "name": "Test", "description": "Me"}' |
||||
|
|
||||
|
header_b64=$(echo -n "$header" | jq -c -M . | tr -d '\n') |
||||
|
payload_b64=$(echo -n "$payload" | jq -c -M . | tr -d '\n') |
||||
|
|
||||
|
signing_input="$header_b64.$payload_b64" |
||||
|
|
||||
|
echo -n "$signing_input" | openssl dgst -sha256 -sign private.pem -out signature.bin |
||||
|
|
||||
|
# Read binary signature from file and encode it to Base64 URL-Safe format |
||||
|
signature_b64=$(base64 -w 0 < signature.bin | tr -d '=' | tr '+' '-' | tr '/' '_') |
||||
|
|
||||
|
# Construct the JWT |
||||
|
jwt="$signing_input.$signature_b64" |
||||
|
|
||||
|
openssl dgst -sha256 -verify public.pem -signature signature.bin -out verified.txt <(echo -n "$signing_input") |
||||
|
|
||||
|
|
Loading…
Reference in new issue