<div dir="ltr"><div class="gmail_quote"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div>Hi all,<br></div>I am trying to use OpenSSL libraries (libssl-dev 1.0.2 or 1.1.1)  to encode integers into DER format.I am using ASN1_generate_nconf but it seems that this function incorrectly encodes integers. It should encode in two's complement format and should prepend 0x00 byte if the first byte of encoded integer is greater then 0x80. But it is not doing that.<br><br></div><div>Here is my simple program where I check the length of encoded integer. For example for int = 128 the length should be 2. But the length is 2 beginning from int = 256.<br><br><div><br></div><div>Am I using correct function or should I use different one? </div><br><span style="font-family:monospace"><br>#include <stdio.h><br>#include <stdint.h><br>#include <openssl/asn1.h><br>uint64_t i;<br>char str[100];<br>ASN1_TYPE *asn_ptr = NULL;<br>int main () {<br>        for(i = 120; i < 270; i++) {<br>                sprintf(str,"INTEGER:%lu",i);<br>                asn_ptr = ASN1_generate_nconf(str, NULL);<br>                printf("i: %lu, str: %s , len: %d \n", i, str, asn_ptr->value.integer->length);<br>        }<br>}<br><br>i: 120, str: INTEGER:120 , len: 1<br>i: 121, str: INTEGER:121 , len: 1<br>i: 122, str: INTEGER:122 , len: 1<br>i: 123, str: INTEGER:123 , len: 1<br>i: 124, str: INTEGER:124 , len: 1<br>i: 125, str: INTEGER:125 , len: 1<br>i: 126, str: INTEGER:126 , len: 1<br>i: 127, str: INTEGER:127 , len: 1<br>i: 128, str: INTEGER:128 , len: 1<br>i: 129, str: INTEGER:129 , len: 1<br>i: 130, str: INTEGER:130 , len: 1<br>i: 131, str: INTEGER:131 , len: 1<br>i: 132, str: INTEGER:132 , len: 1<br>i: 133, str: INTEGER:133 , len: 1<br>i: 134, str: INTEGER:134 , len: 1<br>i: 135, str: INTEGER:135 , len: 1<br>i: 136, str: INTEGER:136 , len: 1<br>i: 137, str: INTEGER:137 , len: 1<br>i: 138, str: INTEGER:138 , len: 1<br>i: 139, str: INTEGER:139 , len: 1<br>i: 140, str: INTEGER:140 , len: 1<br>i: 141, str: INTEGER:141 , len: 1<br>i: 142, str: INTEGER:142 , len: 1<br>i: 143, str: INTEGER:143 , len: 1<br>i: 144, str: INTEGER:144 , len: 1<br>i: 145, str: INTEGER:145 , len: 1<br>i: 146, str: INTEGER:146 , len: 1<br>i: 147, str: INTEGER:147 , len: 1<br>i: 148, str: INTEGER:148 , len: 1<br>i: 149, str: INTEGER:149 , len: 1<br>i: 150, str: INTEGER:150 , len: 1<br>i: 151, str: INTEGER:151 , len: 1<br>i: 152, str: INTEGER:152 , len: 1<br>i: 153, str: INTEGER:153 , len: 1<br>i: 154, str: INTEGER:154 , len: 1<br>i: 155, str: INTEGER:155 , len: 1<br>i: 156, str: INTEGER:156 , len: 1<br>i: 157, str: INTEGER:157 , len: 1<br>i: 158, str: INTEGER:158 , len: 1<br>i: 159, str: INTEGER:159 , len: 1<br>i: 160, str: INTEGER:160 , len: 1<br>i: 161, str: INTEGER:161 , len: 1<br>i: 162, str: INTEGER:162 , len: 1<br>i: 163, str: INTEGER:163 , len: 1<br>i: 164, str: INTEGER:164 , len: 1<br>i: 165, str: INTEGER:165 , len: 1<br>i: 166, str: INTEGER:166 , len: 1<br>i: 167, str: INTEGER:167 , len: 1<br>i: 168, str: INTEGER:168 , len: 1<br>i: 169, str: INTEGER:169 , len: 1<br>i: 170, str: INTEGER:170 , len: 1<br>i: 171, str: INTEGER:171 , len: 1<br>i: 172, str: INTEGER:172 , len: 1<br>i: 173, str: INTEGER:173 , len: 1<br>i: 174, str: INTEGER:174 , len: 1<br>i: 175, str: INTEGER:175 , len: 1<br>i: 176, str: INTEGER:176 , len: 1<br>i: 177, str: INTEGER:177 , len: 1<br>i: 178, str: INTEGER:178 , len: 1<br>i: 179, str: INTEGER:179 , len: 1<br>i: 180, str: INTEGER:180 , len: 1<br>i: 181, str: INTEGER:181 , len: 1<br>i: 182, str: INTEGER:182 , len: 1<br>i: 183, str: INTEGER:183 , len: 1<br>i: 184, str: INTEGER:184 , len: 1<br>i: 185, str: INTEGER:185 , len: 1<br>i: 186, str: INTEGER:186 , len: 1<br>i: 187, str: INTEGER:187 , len: 1<br>i: 188, str: INTEGER:188 , len: 1<br>i: 189, str: INTEGER:189 , len: 1<br>i: 190, str: INTEGER:190 , len: 1<br>i: 191, str: INTEGER:191 , len: 1<br>i: 192, str: INTEGER:192 , len: 1<br>i: 193, str: INTEGER:193 , len: 1<br>i: 194, str: INTEGER:194 , len: 1<br>i: 195, str: INTEGER:195 , len: 1<br>i: 196, str: INTEGER:196 , len: 1<br>i: 197, str: INTEGER:197 , len: 1<br>i: 198, str: INTEGER:198 , len: 1<br>i: 199, str: INTEGER:199 , len: 1<br>i: 200, str: INTEGER:200 , len: 1<br>i: 201, str: INTEGER:201 , len: 1<br>i: 202, str: INTEGER:202 , len: 1<br>i: 203, str: INTEGER:203 , len: 1<br>i: 204, str: INTEGER:204 , len: 1<br>i: 205, str: INTEGER:205 , len: 1<br>i: 206, str: INTEGER:206 , len: 1<br>i: 207, str: INTEGER:207 , len: 1<br>i: 208, str: INTEGER:208 , len: 1<br>i: 209, str: INTEGER:209 , len: 1<br>i: 210, str: INTEGER:210 , len: 1<br>i: 211, str: INTEGER:211 , len: 1<br>i: 212, str: INTEGER:212 , len: 1<br>i: 213, str: INTEGER:213 , len: 1<br>i: 214, str: INTEGER:214 , len: 1<br>i: 215, str: INTEGER:215 , len: 1<br>i: 216, str: INTEGER:216 , len: 1<br>i: 217, str: INTEGER:217 , len: 1<br>i: 218, str: INTEGER:218 , len: 1<br>i: 219, str: INTEGER:219 , len: 1<br>i: 220, str: INTEGER:220 , len: 1<br>i: 221, str: INTEGER:221 , len: 1<br>i: 222, str: INTEGER:222 , len: 1<br>i: 223, str: INTEGER:223 , len: 1<br>i: 224, str: INTEGER:224 , len: 1<br>i: 225, str: INTEGER:225 , len: 1<br>i: 226, str: INTEGER:226 , len: 1<br>i: 227, str: INTEGER:227 , len: 1<br>i: 228, str: INTEGER:228 , len: 1<br>i: 229, str: INTEGER:229 , len: 1<br>i: 230, str: INTEGER:230 , len: 1<br>i: 231, str: INTEGER:231 , len: 1<br>i: 232, str: INTEGER:232 , len: 1<br>i: 233, str: INTEGER:233 , len: 1<br>i: 234, str: INTEGER:234 , len: 1<br>i: 235, str: INTEGER:235 , len: 1<br>i: 236, str: INTEGER:236 , len: 1<br>i: 237, str: INTEGER:237 , len: 1<br>i: 238, str: INTEGER:238 , len: 1<br>i: 239, str: INTEGER:239 , len: 1<br>i: 240, str: INTEGER:240 , len: 1<br>i: 241, str: INTEGER:241 , len: 1<br>i: 242, str: INTEGER:242 , len: 1<br>i: 243, str: INTEGER:243 , len: 1<br>i: 244, str: INTEGER:244 , len: 1<br>i: 245, str: INTEGER:245 , len: 1<br>i: 246, str: INTEGER:246 , len: 1<br>i: 247, str: INTEGER:247 , len: 1<br>i: 248, str: INTEGER:248 , len: 1<br>i: 249, str: INTEGER:249 , len: 1<br>i: 250, str: INTEGER:250 , len: 1<br>i: 251, str: INTEGER:251 , len: 1<br>i: 252, str: INTEGER:252 , len: 1<br>i: 253, str: INTEGER:253 , len: 1<br>i: 254, str: INTEGER:254 , len: 1<br>i: 255, str: INTEGER:255 , len: 1<br>i: 256, str: INTEGER:256 , len: 2<br>i: 257, str: INTEGER:257 , len: 2<br>i: 258, str: INTEGER:258 , len: 2<br>i: 259, str: INTEGER:259 , len: 2<br>i: 260, str: INTEGER:260 , len: 2<br>i: 261, str: INTEGER:261 , len: 2<br>i: 262, str: INTEGER:262 , len: 2<br>i: 263, str: INTEGER:263 , len: 2<br>i: 264, str: INTEGER:264 , len: 2<br>i: 265, str: INTEGER:265 , len: 2<br>i: 266, str: INTEGER:266 , len: 2<br>i: 267, str: INTEGER:267 , len: 2<br>i: 268, str: INTEGER:268 , len: 2<br>i: 269, str: INTEGER:269 , len: 2<br><br></span><br><br></div><div>Regards,<br></div><div>Rafał Arciszewski<br></div></div></div></div></div></div>
</div></div>