Skip to content

Instantly share code, notes, and snippets.

@Stexxen
Last active September 9, 2025 18:38
Show Gist options
  • Save Stexxen/53e9c677b5e06ff9b0b5aa7969a67818 to your computer and use it in GitHub Desktop.
Save Stexxen/53e9c677b5e06ff9b0b5aa7969a67818 to your computer and use it in GitHub Desktop.

Verification Testing endpoint

There are 2 endpoints setup for testing.

/csf/T/letterbox/2.0/post.txt

Used in 1st stage development. Success returns 200, failure gives 403. The Response body is a timed text log of all the detailed steps that the system used to verify the message. In the case of failure this should be valuable in identifying where things are going wrong.

/csf/T/letterbox/2.0/post.json

Used to submit messages to a production-like CSF endpoint. The errors will be formated in the same way as Production CSF messages, success is 204, failure is 403. No further processing on the messages is performed.

Examples

RSA, Success (200) at the .txt endpoint

curl -X "POST" -i "https://sp-dev.nowyoyo.net:10100/csf/T/letterbox/2.0/post.txt" \
     -H 'X-CSF-SIGNATURE-DATESTAMP: 202412121340391' \
     -H 'X-CSF-SIGNATURE: a=rsa-sha256; q=dns/txt; c=simple/simple; s=809b6e65-a6e7-40f6-8b52-04dd65b6fce1; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=h3YO8jlz2Gup/szefoH3RxO46IJmnk+8GJ4pxxRyfh+UJ0mZym64o0izGNG1x3GlmMiuHfZc5xP9xIANP+OIajX1udhTGuZkSfUU3L4MrvT/PYkAEfIMm7lFeCWPPgOr0bNIVjNVBrB41akN1iwcQjK0gD+/nUGLVXihdOFCj0xSRIypLPKPxXsZED6sfiBSlEiZcGsF9FCiV5OQQAwRoRhFQE4cnn00QE/S3NoN8/lX7i8OXIaTab6p/HCMIjirM6VBKrc+O0HEdekXn1DP7s0cwp/LkeXTWVloj+vkZREHqNkdIZGeab7N8vFgLrXmYJoR2LM+LQtqhq01KRVSY4hDWdbjD4cSJWkV9P/GWelFiuSNtYmWqTcrT0kqN7pMwVq1Ht4iuhrxH7h2hnCjYG12bEYiHPmarO+JJCPx5RawO0t2BRBxNfEXbp6boTQzZ//MrdW4mUDEyCQhs6s/OHd5x14Z2DJUTYRhugLwGkwSaVjt44y6X9RnB5d9j/Py;' \
     -d "hello"
HTTP/1.1 200
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Type: application/json
Content-Length: 5818
Date: Tue, 09 Sep 2025 17:07:39 GMT

0ms : Request Received
0ms : Checking Initial CSF MandatoryHeaders [X-CSF-SIGNATURE, X-CSF-SIGNATURE-DATESTAMP]
0ms : Parsing Header Signature: a=rsa-sha256; q=dns/txt; c=simple/simple; s=809b6e65-a6e7-40f6-8b52-04dd65b6fce1; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=h3YO8jlz2Gup/szefoH3RxO46IJmnk+8GJ4pxxRyfh+UJ0mZym64o0izGNG1x3GlmMiuHfZc5xP9xIANP+OIajX1udhTGuZkSfUU3L4MrvT/PYkAEfIMm7lFeCWPPgOr0bNIVjNVBrB41akN1iwcQjK0gD+/nUGLVXihdOFCj0xSRIypLPKPxXsZED6sfiBSlEiZcGsF9FCiV5OQQAwRoRhFQE4cnn00QE/S3NoN8/lX7i8OXIaTab6p/HCMIjirM6VBKrc+O0HEdekXn1DP7s0cwp/LkeXTWVloj+vkZREHqNkdIZGeab7N8vFgLrXmYJoR2LM+LQtqhq01KRVSY4hDWdbjD4cSJWkV9P/GWelFiuSNtYmWqTcrT0kqN7pMwVq1Ht4iuhrxH7h2hnCjYG12bEYiHPmarO+JJCPx5RawO0t2BRBxNfEXbp6boTQzZ//MrdW4mUDEyCQhs6s/OHd5x14Z2DJUTYRhugLwGkwSaVjt44y6X9RnB5d9j/Py;
0ms : Tags present are :
	a : rsa-sha256
	q : dns/txt
	c : simple/simple
	s : 809b6e65-a6e7-40f6-8b52-04dd65b6fce1
	d : gplb-test.nowyoyo.net
	v : 1
	h : X-CSF-SIGNATURE-DATESTAMP
	bh : LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
	b : h3YO8jlz2Gup/szefoH3RxO46IJmnk+8GJ4pxxRyfh+UJ0mZym64o0izGNG1x3GlmMiuHfZc5xP9xIANP+OIajX1udhTGuZkSfUU3L4MrvT/PYkAEfIMm7lFeCWPPgOr0bNIVjNVBrB41akN1iwcQjK0gD+/nUGLVXihdOFCj0xSRIypLPKPxXsZED6sfiBSlEiZcGsF9FCiV5OQQAwRoRhFQE4cnn00QE/S3NoN8/lX7i8OXIaTab6p/HCMIjirM6VBKrc+O0HEdekXn1DP7s0cwp/LkeXTWVloj+vkZREHqNkdIZGeab7N8vFgLrXmYJoR2LM+LQtqhq01KRVSY4hDWdbjD4cSJWkV9P/GWelFiuSNtYmWqTcrT0kqN7pMwVq1Ht4iuhrxH7h2hnCjYG12bEYiHPmarO+JJCPx5RawO0t2BRBxNfEXbp6boTQzZ//MrdW4mUDEyCQhs6s/OHd5x14Z2DJUTYRhugLwGkwSaVjt44y6X9RnB5d9j/Py
0ms : Using the following Domain for Public Key Lookup: 809b6e65-a6e7-40f6-8b52-04dd65b6fce1._domainkey.gplb-test.nowyoyo.net
0ms : Received the following records:
	k=rsa; p=MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA6/RekuGAsET2Ir8E4K5BU74MBXebo7QwrOnSGirtNgRLDcwP2R84Eeum9BLxZtiumUrmO6ja7DrteSZhzOyC09KM3b22zV43bm7nv/FF40+KpTDQ/FZ32W838UIZGgHOyICk37hlPvnGrVPg7rT6HAKsaj5W0zbvO5vKDUOz2r3bvrWo79YSxtVfGQ1pHhhZYV2dL1C0uiADbz5L1Cu0qCBjqGJQbYq4ALdaKTnAm2NG/N9W2i3IWJUQIyiTr11qtBrrR8sj2YhYeph6GTsOXggpAWZnEHZz+LKzD4roVqUxkByLWRLB2I5Ju/xPPtTjCDakfvGlsiWl5BMAhn79p0mW6hzcA4DT7Iz+nSV8K3XMU4rxs0AcaafcBsKREmfbGz4K3ycWHZ/Yrxb+PqYHy7NSK76mHsAjuU8nuKYtZGIYHwT4friS2R3HtXJ+olLmdZ+XnkpdvEGDb+ZVv/G9vYp020LZQBBd0hp1Ez8a/3F7jRt8xUJ0ljstWjbq+m3bAgMBAAE=
0ms : Parsing Public Key Record: k=rsa; p=MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA6/RekuGAsET2Ir8E4K5BU74MBXebo7QwrOnSGirtNgRLDcwP2R84Eeum9BLxZtiumUrmO6ja7DrteSZhzOyC09KM3b22zV43bm7nv/FF40+KpTDQ/FZ32W838UIZGgHOyICk37hlPvnGrVPg7rT6HAKsaj5W0zbvO5vKDUOz2r3bvrWo79YSxtVfGQ1pHhhZYV2dL1C0uiADbz5L1Cu0qCBjqGJQbYq4ALdaKTnAm2NG/N9W2i3IWJUQIyiTr11qtBrrR8sj2YhYeph6GTsOXggpAWZnEHZz+LKzD4roVqUxkByLWRLB2I5Ju/xPPtTjCDakfvGlsiWl5BMAhn79p0mW6hzcA4DT7Iz+nSV8K3XMU4rxs0AcaafcBsKREmfbGz4K3ycWHZ/Yrxb+PqYHy7NSK76mHsAjuU8nuKYtZGIYHwT4friS2R3HtXJ+olLmdZ+XnkpdvEGDb+ZVv/G9vYp020LZQBBd0hp1Ez8a/3F7jRt8xUJ0ljstWjbq+m3bAgMBAAE=
0ms : Tags present are :
	k : rsa
	p : MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA6/RekuGAsET2Ir8E4K5BU74MBXebo7QwrOnSGirtNgRLDcwP2R84Eeum9BLxZtiumUrmO6ja7DrteSZhzOyC09KM3b22zV43bm7nv/FF40+KpTDQ/FZ32W838UIZGgHOyICk37hlPvnGrVPg7rT6HAKsaj5W0zbvO5vKDUOz2r3bvrWo79YSxtVfGQ1pHhhZYV2dL1C0uiADbz5L1Cu0qCBjqGJQbYq4ALdaKTnAm2NG/N9W2i3IWJUQIyiTr11qtBrrR8sj2YhYeph6GTsOXggpAWZnEHZz+LKzD4roVqUxkByLWRLB2I5Ju/xPPtTjCDakfvGlsiWl5BMAhn79p0mW6hzcA4DT7Iz+nSV8K3XMU4rxs0AcaafcBsKREmfbGz4K3ycWHZ/Yrxb+PqYHy7NSK76mHsAjuU8nuKYtZGIYHwT4friS2R3HtXJ+olLmdZ+XnkpdvEGDb+ZVv/G9vYp020LZQBBd0hp1Ez8a/3F7jRt8xUJ0ljstWjbq+m3bAgMBAAE=
0ms : Have Public Key of RSA type and X.509 format.
0ms : RSA Key length is determined as 3072 bits.
0ms : Body is 5 bytes.
	[104, 101, 108, 108, 111]
0ms : Hashing Algorithm is specified as : SHA256
0ms : SHA256Hash of 5 byte body is : LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
0ms : Calculated hash and Signature hash are a match
0ms : Starting Signature Generation
0ms : h tag requests the following fields for the signature: [X-CSF-SIGNATURE-DATESTAMP]
0ms : Header 'X-CSF-SIGNATURE-DATESTAMP' contains 202412121340391
	Adding Header Value : [50, 48, 50, 52, 49, 50, 49, 50, 49, 51, 52, 48, 51, 57, 49]
	Adding CRLF : [13, 10]
0ms : Using the following as the signature line with an empty b tag
	a=rsa-sha256; q=dns/txt; c=simple/simple; s=809b6e65-a6e7-40f6-8b52-04dd65b6fce1; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=;
0ms : Prepending 'DKIM-Signature: '
	DKIM-Signature: a=rsa-sha256; q=dns/txt; c=simple/simple; s=809b6e65-a6e7-40f6-8b52-04dd65b6fce1; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=;
0ms : Adding the new DKIM-Signature String to the Signature Generation
	[68, 75, 73, 77, 45, 83, 105, 103, 110, 97, 116, 117, 114, 101, 58, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 113, 61, 100, 110, 115, 47, 116, 120, 116, 59, 32, 99, 61, 115, 105, 109, 112, 108, 101, 47, 115, 105, 109, 112, 108, 101, 59, 32, 115, 61, 56, 48, 57, 98, 54, 101, 54, 53, 45, 97, 54, 101, 55, 45, 52, 48, 102, 54, 45, 56, 98, 53, 50, 45, 48, 52, 100, 100, 54, 53, 98, 54, 102, 99, 101, 49, 59, 32, 100, 61, 103, 112, 108, 98, 45, 116, 101, 115, 116, 46, 110, 111, 119, 121, 111, 121, 111, 46, 110, 101, 116, 59, 32, 118, 61, 49, 59, 32, 104, 61, 88, 45, 67, 83, 70, 45, 83, 73, 71, 78, 65, 84, 85, 82, 69, 45, 68, 65, 84, 69, 83, 84, 65, 77, 80, 59, 32, 98, 104, 61, 76, 80, 74, 78, 117, 108, 43, 119, 111, 119, 52, 109, 54, 68, 115, 113, 120, 98, 110, 105, 110, 104, 115, 87, 72, 108, 119, 102, 112, 48, 74, 101, 99, 119, 81, 122, 89, 112, 79, 76, 109, 67, 81, 61, 59, 32, 98, 61, 59]
0ms : Proceeding with Signature Generation and Verification
1ms : Signature verification successful!
1ms : Result = Pass. Well done!

RSA, Success at the .json endpoint

curl -X "POST" -i "https://sp-dev.nowyoyo.net:10100/csf/T/letterbox/2.0/post.json" \
     -H 'X-CSF-SIGNATURE-DATESTAMP: 202412121340391' \
     -H 'X-CSF-SIGNATURE: a=rsa-sha256; q=dns/txt; c=simple/simple; s=809b6e65-a6e7-40f6-8b52-04dd65b6fce1; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=h3YO8jlz2Gup/szefoH3RxO46IJmnk+8GJ4pxxRyfh+UJ0mZym64o0izGNG1x3GlmMiuHfZc5xP9xIANP+OIajX1udhTGuZkSfUU3L4MrvT/PYkAEfIMm7lFeCWPPgOr0bNIVjNVBrB41akN1iwcQjK0gD+/nUGLVXihdOFCj0xSRIypLPKPxXsZED6sfiBSlEiZcGsF9FCiV5OQQAwRoRhFQE4cnn00QE/S3NoN8/lX7i8OXIaTab6p/HCMIjirM6VBKrc+O0HEdekXn1DP7s0cwp/LkeXTWVloj+vkZREHqNkdIZGeab7N8vFgLrXmYJoR2LM+LQtqhq01KRVSY4hDWdbjD4cSJWkV9P/GWelFiuSNtYmWqTcrT0kqN7pMwVq1Ht4iuhrxH7h2hnCjYG12bEYiHPmarO+JJCPx5RawO0t2BRBxNfEXbp6boTQzZ//MrdW4mUDEyCQhs6s/OHd5x14Z2DJUTYRhugLwGkwSaVjt44y6X9RnB5d9j/Py;' \
     -d "hello"
HTTP/1.1 204
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Date: Tue, 09 Sep 2025 16:41:31 GMT

ED25519, Success at the .txt endpoint

curl -X "POST" "https://sp-dev.nowyoyo.net:10100/csf/T/letterbox/2.0/post.txt" \
     -H 'X-CSF-SIGNATURE-DATESTAMP: 202412121340391' \
     -H 'X-CSF-SIGNATURE: a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=LiRX0EqzkcSD4nZwRHlPhtQge4vp3Kssh9Z/Ov4dAl3PHmrhOthDTMs3RoTUSnjPgweoY+wXsCDOPiOGcqAxCQ==;' \
     -d "hello"
0ms : Request Received
0ms : Checking Initial CSF MandatoryHeaders [X-CSF-SIGNATURE, X-CSF-SIGNATURE-DATESTAMP]
0ms : Parsing Header Signature: a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=LiRX0EqzkcSD4nZwRHlPhtQge4vp3Kssh9Z/Ov4dAl3PHmrhOthDTMs3RoTUSnjPgweoY+wXsCDOPiOGcqAxCQ==;
0ms : Tags present are :
	a : ed25519-sha256
	q : dns/txt
	c : simple/simple
	s : a73f0493-fd1f-4b5b-826c-1d6243d43365
	d : gplb-test.nowyoyo.net
	v : 1
	h : X-CSF-SIGNATURE-DATESTAMP
	bh : LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
	b : LiRX0EqzkcSD4nZwRHlPhtQge4vp3Kssh9Z/Ov4dAl3PHmrhOthDTMs3RoTUSnjPgweoY+wXsCDOPiOGcqAxCQ==
0ms : Using the following Domain for Public Key Lookup: a73f0493-fd1f-4b5b-826c-1d6243d43365._domainkey.gplb-test.nowyoyo.net
0ms : Received the following records: 
	k=ed25519; p=MCowBQYDK2VwAyEAqiCrokPReIFI1h4Jdp7RCRRVQ4Fltdyn429O4H2jYog=
0ms : Parsing Public Key Record: k=ed25519; p=MCowBQYDK2VwAyEAqiCrokPReIFI1h4Jdp7RCRRVQ4Fltdyn429O4H2jYog=
0ms : Tags present are :
	k : ed25519
	p : MCowBQYDK2VwAyEAqiCrokPReIFI1h4Jdp7RCRRVQ4Fltdyn429O4H2jYog=
0ms : Have Public Key of EdDSA type and X.509 format.
0ms : EdRSA Key length is 32 bytes
0ms : Body is 5 bytes.
	[104, 101, 108, 108, 111]
0ms : Hashing Algorithm is specified as : SHA256
0ms : SHA256Hash of 5 byte body is : LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
0ms : Calculated hash and Signature hash are a match
0ms : Starting Signature Generation
0ms : h tag requests the following fields for the signature: [X-CSF-SIGNATURE-DATESTAMP]
0ms : Header 'X-CSF-SIGNATURE-DATESTAMP' contains 202412121340391
	Adding Header Value : [50, 48, 50, 52, 49, 50, 49, 50, 49, 51, 52, 48, 51, 57, 49]
	Adding CRLF : [13, 10]
0ms : Using the following as the signature line with an empty b tag
	a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=;
0ms : Prepending 'DKIM-Signature: '
	DKIM-Signature: a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=;
0ms : Adding the new DKIM-Signature String to the Signature Generation
	[68, 75, 73, 77, 45, 83, 105, 103, 110, 97, 116, 117, 114, 101, 58, 32, 97, 61, 101, 100, 50, 53, 53, 49, 57, 45, 115, 104, 97, 50, 53, 54, 59, 32, 113, 61, 100, 110, 115, 47, 116, 120, 116, 59, 32, 99, 61, 115, 105, 109, 112, 108, 101, 47, 115, 105, 109, 112, 108, 101, 59, 32, 115, 61, 97, 55, 51, 102, 48, 52, 57, 51, 45, 102, 100, 49, 102, 45, 52, 98, 53, 98, 45, 56, 50, 54, 99, 45, 49, 100, 54, 50, 52, 51, 100, 52, 51, 51, 54, 53, 59, 32, 100, 61, 103, 112, 108, 98, 45, 116, 101, 115, 116, 46, 110, 111, 119, 121, 111, 121, 111, 46, 110, 101, 116, 59, 32, 118, 61, 49, 59, 32, 104, 61, 88, 45, 67, 83, 70, 45, 83, 73, 71, 78, 65, 84, 85, 82, 69, 45, 68, 65, 84, 69, 83, 84, 65, 77, 80, 59, 32, 98, 104, 61, 76, 80, 74, 78, 117, 108, 43, 119, 111, 119, 52, 109, 54, 68, 115, 113, 120, 98, 110, 105, 110, 104, 115, 87, 72, 108, 119, 102, 112, 48, 74, 101, 99, 119, 81, 122, 89, 112, 79, 76, 109, 67, 81, 61, 59, 32, 98, 61, 59]
0ms : Proceeding with Signature Generation and Verification
1ms : Signature verification successful!
1ms : Result = Pass. Well done!

ED25519, Fail due to Body Hash at the .txt endpoint

curl -X "POST" "https://sp-dev.nowyoyo.net:10100/csf/T/letterbox/2.0/post.txt" \
     -H 'X-CSF-SIGNATURE-DATESTAMP: 202412121340391' \
     -H 'X-CSF-SIGNATURE: a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=LiRX0EqzkcSD4nZwRHlPhtQge4vp3Kssh9Z/Ov4dAl3PHmrhOthDTMs3RoTUSnjPgweoY+wXsCDOPiOGcqAxCQ==;' \
     -d "hellox"
0ms : Request Received
0ms : Checking Initial CSF MandatoryHeaders [X-CSF-SIGNATURE, X-CSF-SIGNATURE-DATESTAMP]
0ms : Parsing Header Signature: a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=LiRX0EqzkcSD4nZwRHlPhtQge4vp3Kssh9Z/Ov4dAl3PHmrhOthDTMs3RoTUSnjPgweoY+wXsCDOPiOGcqAxCQ==;
0ms : Tags present are :
	a : ed25519-sha256
	q : dns/txt
	c : simple/simple
	s : a73f0493-fd1f-4b5b-826c-1d6243d43365
	d : gplb-test.nowyoyo.net
	v : 1
	h : X-CSF-SIGNATURE-DATESTAMP
	bh : LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
	b : LiRX0EqzkcSD4nZwRHlPhtQge4vp3Kssh9Z/Ov4dAl3PHmrhOthDTMs3RoTUSnjPgweoY+wXsCDOPiOGcqAxCQ==
0ms : Using the following Domain for Public Key Lookup: a73f0493-fd1f-4b5b-826c-1d6243d43365._domainkey.gplb-test.nowyoyo.net
44ms : Received the following records:
	k=ed25519; p=MCowBQYDK2VwAyEAqiCrokPReIFI1h4Jdp7RCRRVQ4Fltdyn429O4H2jYog=
44ms : Parsing Public Key Record: k=ed25519; p=MCowBQYDK2VwAyEAqiCrokPReIFI1h4Jdp7RCRRVQ4Fltdyn429O4H2jYog=
44ms : Tags present are :
	k : ed25519
	p : MCowBQYDK2VwAyEAqiCrokPReIFI1h4Jdp7RCRRVQ4Fltdyn429O4H2jYog=
44ms : Have Public Key of EdDSA type and X.509 format.
44ms : EdRSA Key length is 32 bytes
45ms : Body is 6 bytes.
	[104, 101, 108, 108, 111, 120]
45ms : Hashing Algorithm is specified as : SHA256
45ms : SHA256Hash of 6 byte body is : Gmu6Qx+5NH5pfydVjH9xKhOJfJX82h5QuFOpeF1zLTc=
45ms : Calculated hash and Signature hash (bh) are **not** a match
	Calculated hash is Gmu6Qx+5NH5pfydVjH9xKhOJfJX82h5QuFOpeF1zLTc=
	Signature hash (bh) is LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
53ms : Result = Fail.

ED25519, Fail Signature match at the .txt endpoint

curl -X "POST" "https://sp-dev.nowyoyo.net:10100/csf/T/letterbox/2.0/post.txt" \
     -H 'X-CSF-SIGNATURE-DATESTAMP: 202412121340392' \
     -H 'X-CSF-SIGNATURE: a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=LiRX0EqzkcSD4nZwRHlPhtQge4vp3Kssh9Z/Ov4dAl3PHmrhOthDTMs3RoTUSnjPgweoY+wXsCDOPiOGcqAxCQ==;' \
     -d "hello"
0ms : Request Received
0ms : Checking Initial CSF MandatoryHeaders [X-CSF-SIGNATURE, X-CSF-SIGNATURE-DATESTAMP]
0ms : Parsing Header Signature: a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=LiRX0EqzkcSD4nZwRHlPhtQge4vp3Kssh9Z/Ov4dAl3PHmrhOthDTMs3RoTUSnjPgweoY+wXsCDOPiOGcqAxCQ==;
0ms : Tags present are :
	a : ed25519-sha256
	q : dns/txt
	c : simple/simple
	s : a73f0493-fd1f-4b5b-826c-1d6243d43365
	d : gplb-test.nowyoyo.net
	v : 1
	h : X-CSF-SIGNATURE-DATESTAMP
	bh : LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
	b : LiRX0EqzkcSD4nZwRHlPhtQge4vp3Kssh9Z/Ov4dAl3PHmrhOthDTMs3RoTUSnjPgweoY+wXsCDOPiOGcqAxCQ==
0ms : Using the following Domain for Public Key Lookup: a73f0493-fd1f-4b5b-826c-1d6243d43365._domainkey.gplb-test.nowyoyo.net
0ms : Received the following records:
	k=ed25519; p=MCowBQYDK2VwAyEAqiCrokPReIFI1h4Jdp7RCRRVQ4Fltdyn429O4H2jYog=
0ms : Parsing Public Key Record: k=ed25519; p=MCowBQYDK2VwAyEAqiCrokPReIFI1h4Jdp7RCRRVQ4Fltdyn429O4H2jYog=
0ms : Tags present are :
	k : ed25519
	p : MCowBQYDK2VwAyEAqiCrokPReIFI1h4Jdp7RCRRVQ4Fltdyn429O4H2jYog=
0ms : Have Public Key of EdDSA type and X.509 format.
0ms : EdRSA Key length is 32 bytes
1ms : Body is 5 bytes.
	[104, 101, 108, 108, 111]
1ms : Hashing Algorithm is specified as : SHA256
1ms : SHA256Hash of 5 byte body is : LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
1ms : Calculated hash and Signature hash are a match
1ms : Starting Signature Generation
1ms : h tag requests the following fields for the signature: [X-CSF-SIGNATURE-DATESTAMP]
1ms : Header 'X-CSF-SIGNATURE-DATESTAMP' contains 202412121340392
	Adding Header Value : [50, 48, 50, 52, 49, 50, 49, 50, 49, 51, 52, 48, 51, 57, 50]
	Adding CRLF : [13, 10]
1ms : Using the following as the signature line with an empty b tag
	a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=;
1ms : Prepending 'DKIM-Signature: '
	DKIM-Signature: a=ed25519-sha256; q=dns/txt; c=simple/simple; s=a73f0493-fd1f-4b5b-826c-1d6243d43365; d=gplb-test.nowyoyo.net; v=1; h=X-CSF-SIGNATURE-DATESTAMP; bh=LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=; b=;
1ms : Adding the new DKIM-Signature String to the Signature Generation
	[68, 75, 73, 77, 45, 83, 105, 103, 110, 97, 116, 117, 114, 101, 58, 32, 97, 61, 101, 100, 50, 53, 53, 49, 57, 45, 115, 104, 97, 50, 53, 54, 59, 32, 113, 61, 100, 110, 115, 47, 116, 120, 116, 59, 32, 99, 61, 115, 105, 109, 112, 108, 101, 47, 115, 105, 109, 112, 108, 101, 59, 32, 115, 61, 97, 55, 51, 102, 48, 52, 57, 51, 45, 102, 100, 49, 102, 45, 52, 98, 53, 98, 45, 56, 50, 54, 99, 45, 49, 100, 54, 50, 52, 51, 100, 52, 51, 51, 54, 53, 59, 32, 100, 61, 103, 112, 108, 98, 45, 116, 101, 115, 116, 46, 110, 111, 119, 121, 111, 121, 111, 46, 110, 101, 116, 59, 32, 118, 61, 49, 59, 32, 104, 61, 88, 45, 67, 83, 70, 45, 83, 73, 71, 78, 65, 84, 85, 82, 69, 45, 68, 65, 84, 69, 83, 84, 65, 77, 80, 59, 32, 98, 104, 61, 76, 80, 74, 78, 117, 108, 43, 119, 111, 119, 52, 109, 54, 68, 115, 113, 120, 98, 110, 105, 110, 104, 115, 87, 72, 108, 119, 102, 112, 48, 74, 101, 99, 119, 81, 122, 89, 112, 79, 76, 109, 67, 81, 61, 59, 32, 98, 61, 59]
1ms : Proceeding with Signature Generation and Verification
3ms : Signature verification has failed!
5ms : Result = Fail.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment