45: OP_LENGTH_0x45: length of R + S
02: OP_INT_0x02: type tag INTEGER indicating length
21: OP_LENGTH_0x21: this is SIG R (33 Bytes)
00D2F9171FDCE547:34818BC6314389B2
D7CCE4C15CC6FA55:6B3886860E493B1A
02
21: unknown opcode
I can see a double zero is there, so the length of the R-Value should be 21hex, 33 bytes decimal. In you case it would end with "02".
However: the 02 should be the type tag indicating length for S-Value, and 21 the length for your S-Value (which it is...).
I just added a "DD" into the end of the R-Value, then it decodes correctly:
45: OP_LENGTH_0x45: length of R + S
02: OP_INT_0x02: type tag INTEGER indicating length
21: OP_LENGTH_0x21: this is SIG R (33 Bytes)
009E38F007CCC1D4:11E9DBA6E03A932E
E5076E2F7F4FA6C3:8B9FA6AD97265546
DD
02: OP_INT_0x02: type tag INTEGER indicating length
21: OP_LENGTH_0x21: this is SIG S (33 Bytes)
0099F89638981D46:5629E65C02BC5FA3
8FB9CA49E2D3FD9F:83326CE8678195AC
16
01: OP_SIGHASHALL: this terminates the ECDSA signature (ASN1-DER structure)
So I guess the library you are using is not assembling the signatures correctly. What are you using?