Fwd: ASN1_generate_nconf - incorrect integer encoding?

Rafał Arciszewski rafal.arciszewski at gmail.com
Tue Oct 1 15:30:56 UTC 2019


Hi all,
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.

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.


Am I using correct function or should I use different one?


#include <stdio.h>
#include <stdint.h>
#include <openssl/asn1.h>
uint64_t i;
char str[100];
ASN1_TYPE *asn_ptr = NULL;
int main () {
        for(i = 120; i < 270; i++) {
                sprintf(str,"INTEGER:%lu",i);
                asn_ptr = ASN1_generate_nconf(str, NULL);
                printf("i: %lu, str: %s , len: %d \n", i, str,
asn_ptr->value.integer->length);
        }
}

i: 120, str: INTEGER:120 , len: 1
i: 121, str: INTEGER:121 , len: 1
i: 122, str: INTEGER:122 , len: 1
i: 123, str: INTEGER:123 , len: 1
i: 124, str: INTEGER:124 , len: 1
i: 125, str: INTEGER:125 , len: 1
i: 126, str: INTEGER:126 , len: 1
i: 127, str: INTEGER:127 , len: 1
i: 128, str: INTEGER:128 , len: 1
i: 129, str: INTEGER:129 , len: 1
i: 130, str: INTEGER:130 , len: 1
i: 131, str: INTEGER:131 , len: 1
i: 132, str: INTEGER:132 , len: 1
i: 133, str: INTEGER:133 , len: 1
i: 134, str: INTEGER:134 , len: 1
i: 135, str: INTEGER:135 , len: 1
i: 136, str: INTEGER:136 , len: 1
i: 137, str: INTEGER:137 , len: 1
i: 138, str: INTEGER:138 , len: 1
i: 139, str: INTEGER:139 , len: 1
i: 140, str: INTEGER:140 , len: 1
i: 141, str: INTEGER:141 , len: 1
i: 142, str: INTEGER:142 , len: 1
i: 143, str: INTEGER:143 , len: 1
i: 144, str: INTEGER:144 , len: 1
i: 145, str: INTEGER:145 , len: 1
i: 146, str: INTEGER:146 , len: 1
i: 147, str: INTEGER:147 , len: 1
i: 148, str: INTEGER:148 , len: 1
i: 149, str: INTEGER:149 , len: 1
i: 150, str: INTEGER:150 , len: 1
i: 151, str: INTEGER:151 , len: 1
i: 152, str: INTEGER:152 , len: 1
i: 153, str: INTEGER:153 , len: 1
i: 154, str: INTEGER:154 , len: 1
i: 155, str: INTEGER:155 , len: 1
i: 156, str: INTEGER:156 , len: 1
i: 157, str: INTEGER:157 , len: 1
i: 158, str: INTEGER:158 , len: 1
i: 159, str: INTEGER:159 , len: 1
i: 160, str: INTEGER:160 , len: 1
i: 161, str: INTEGER:161 , len: 1
i: 162, str: INTEGER:162 , len: 1
i: 163, str: INTEGER:163 , len: 1
i: 164, str: INTEGER:164 , len: 1
i: 165, str: INTEGER:165 , len: 1
i: 166, str: INTEGER:166 , len: 1
i: 167, str: INTEGER:167 , len: 1
i: 168, str: INTEGER:168 , len: 1
i: 169, str: INTEGER:169 , len: 1
i: 170, str: INTEGER:170 , len: 1
i: 171, str: INTEGER:171 , len: 1
i: 172, str: INTEGER:172 , len: 1
i: 173, str: INTEGER:173 , len: 1
i: 174, str: INTEGER:174 , len: 1
i: 175, str: INTEGER:175 , len: 1
i: 176, str: INTEGER:176 , len: 1
i: 177, str: INTEGER:177 , len: 1
i: 178, str: INTEGER:178 , len: 1
i: 179, str: INTEGER:179 , len: 1
i: 180, str: INTEGER:180 , len: 1
i: 181, str: INTEGER:181 , len: 1
i: 182, str: INTEGER:182 , len: 1
i: 183, str: INTEGER:183 , len: 1
i: 184, str: INTEGER:184 , len: 1
i: 185, str: INTEGER:185 , len: 1
i: 186, str: INTEGER:186 , len: 1
i: 187, str: INTEGER:187 , len: 1
i: 188, str: INTEGER:188 , len: 1
i: 189, str: INTEGER:189 , len: 1
i: 190, str: INTEGER:190 , len: 1
i: 191, str: INTEGER:191 , len: 1
i: 192, str: INTEGER:192 , len: 1
i: 193, str: INTEGER:193 , len: 1
i: 194, str: INTEGER:194 , len: 1
i: 195, str: INTEGER:195 , len: 1
i: 196, str: INTEGER:196 , len: 1
i: 197, str: INTEGER:197 , len: 1
i: 198, str: INTEGER:198 , len: 1
i: 199, str: INTEGER:199 , len: 1
i: 200, str: INTEGER:200 , len: 1
i: 201, str: INTEGER:201 , len: 1
i: 202, str: INTEGER:202 , len: 1
i: 203, str: INTEGER:203 , len: 1
i: 204, str: INTEGER:204 , len: 1
i: 205, str: INTEGER:205 , len: 1
i: 206, str: INTEGER:206 , len: 1
i: 207, str: INTEGER:207 , len: 1
i: 208, str: INTEGER:208 , len: 1
i: 209, str: INTEGER:209 , len: 1
i: 210, str: INTEGER:210 , len: 1
i: 211, str: INTEGER:211 , len: 1
i: 212, str: INTEGER:212 , len: 1
i: 213, str: INTEGER:213 , len: 1
i: 214, str: INTEGER:214 , len: 1
i: 215, str: INTEGER:215 , len: 1
i: 216, str: INTEGER:216 , len: 1
i: 217, str: INTEGER:217 , len: 1
i: 218, str: INTEGER:218 , len: 1
i: 219, str: INTEGER:219 , len: 1
i: 220, str: INTEGER:220 , len: 1
i: 221, str: INTEGER:221 , len: 1
i: 222, str: INTEGER:222 , len: 1
i: 223, str: INTEGER:223 , len: 1
i: 224, str: INTEGER:224 , len: 1
i: 225, str: INTEGER:225 , len: 1
i: 226, str: INTEGER:226 , len: 1
i: 227, str: INTEGER:227 , len: 1
i: 228, str: INTEGER:228 , len: 1
i: 229, str: INTEGER:229 , len: 1
i: 230, str: INTEGER:230 , len: 1
i: 231, str: INTEGER:231 , len: 1
i: 232, str: INTEGER:232 , len: 1
i: 233, str: INTEGER:233 , len: 1
i: 234, str: INTEGER:234 , len: 1
i: 235, str: INTEGER:235 , len: 1
i: 236, str: INTEGER:236 , len: 1
i: 237, str: INTEGER:237 , len: 1
i: 238, str: INTEGER:238 , len: 1
i: 239, str: INTEGER:239 , len: 1
i: 240, str: INTEGER:240 , len: 1
i: 241, str: INTEGER:241 , len: 1
i: 242, str: INTEGER:242 , len: 1
i: 243, str: INTEGER:243 , len: 1
i: 244, str: INTEGER:244 , len: 1
i: 245, str: INTEGER:245 , len: 1
i: 246, str: INTEGER:246 , len: 1
i: 247, str: INTEGER:247 , len: 1
i: 248, str: INTEGER:248 , len: 1
i: 249, str: INTEGER:249 , len: 1
i: 250, str: INTEGER:250 , len: 1
i: 251, str: INTEGER:251 , len: 1
i: 252, str: INTEGER:252 , len: 1
i: 253, str: INTEGER:253 , len: 1
i: 254, str: INTEGER:254 , len: 1
i: 255, str: INTEGER:255 , len: 1
i: 256, str: INTEGER:256 , len: 2
i: 257, str: INTEGER:257 , len: 2
i: 258, str: INTEGER:258 , len: 2
i: 259, str: INTEGER:259 , len: 2
i: 260, str: INTEGER:260 , len: 2
i: 261, str: INTEGER:261 , len: 2
i: 262, str: INTEGER:262 , len: 2
i: 263, str: INTEGER:263 , len: 2
i: 264, str: INTEGER:264 , len: 2
i: 265, str: INTEGER:265 , len: 2
i: 266, str: INTEGER:266 , len: 2
i: 267, str: INTEGER:267 , len: 2
i: 268, str: INTEGER:268 , len: 2
i: 269, str: INTEGER:269 , len: 2



Regards,
Rafał Arciszewski
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mta.openssl.org/pipermail/openssl-users/attachments/20191001/8d3ee4d6/attachment.html>


More information about the openssl-users mailing list